2015-05-13 4 views
-1

может кто-то пожалуйста, сообщите, что C# equivelant для этого:Что такое эквивалент C# для & H2?

& H2

вот строка кода из VB:

direntEnableEntry.Properties("userAccountControl").Value = intVal And Not &H2 

здесь преобразованный код:

direntEnableEntry.Properties["userAccountControl"].Value = (intVal & !=0x2); 

Оператор '!' не может применяться к операнду типа 'int'

+3

Я не думаю, что проблема связана с '& H2', но с выражением' (intVal &! = 0x2). Один из этих операторов не принадлежит. – BoltClock

+0

Просто попробуйте изменить '(intVal &! = 0x2)' to '(intVal! = 0x2)'! – cramopy

+2

@cramopy: Ваше предложение кажется случайным, без какого-либо отношения к исходному коду VB. –

ответ

8

intVal And Not &H2 эквивалентно следующему C#:

intVal & ~0x2 

Вы получили 0x2 шестигранной буквальным правильно переводится, но Not в VB.NET (применительно к числовому значению) соответствует оператору побитовое ~, не != (который в VB равен <>, если я правильно помню).

4

В C# префикс 0x обозначает шестнадцатеричную нотацию. Таким образом, эквивалент VB &H2 составляет 0x2.

Соответствующая строка выполняет побитовое НЕ по этому значению, а затем выполняет побитовое И между результатом и intVal. В C# ~ является побитовым оператором NOT. Так эта линия будет выглядеть примерно следующее: C#

direntEnableEntry.Properties["userAccountControl"].Value = (intVal & ~0x2); 

Заметьте, что !!=) является логическим NOT, которая отличается от побитового NOT.

Смежные вопросы