2015-05-13 158 views
-1

有人可以请告知究竟是什么在C#equivelant:&H2的C#等价物是什么?

& 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)'改成'(intVal!= 0x2)'! – cramopy

+2

@cramopy:你的建议似乎是随机的,不考虑原始的VB代码。 –

回答

8

intVal And Not &H2相当于下面的C#:

intVal & ~0x2 

你得到了0x2六角字面翻译正确,但在VB.NET(当应用于数字值)相当于按位~运营商,而不是Not!=(如果我正确记得,在VB中是<>)。

4

在C#中,0x前缀表示十六进制表示法。所以相当于VB的&H20x2

有问题的行对此值执行按位NOT,然后在结果和intVal之间执行按位与操作。在C#中,~是按位NOT运算符。因此,这条线会看起来像在C#中的以下内容:

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

注意!(和!=)是一个逻辑并非如此,这从一个位NOT不同。

相关问题