有人可以告诉你这是什么c#equivelant:
&安培; H2
这里是VB的代码行:
direntEnableEntry.Properties("userAccountControl").Value = intVal And Not &H2
这里是转换后的代码:
direntEnableEntry.Properties["userAccountControl"].Value = (intVal & !=0x2);
运营商'!'不能应用于类型' int'的操作数。
答案 0 :(得分:9)
intVal And Not &H2
等同于以下C#:
intVal & ~0x2
您正确翻译了0x2
十六进制文字,但VB.NET中的Not
(应用于数值时)对应于按位~
运算符,而不是!=
}(如果我没记错的话,在VB中是<>
)。
答案 1 :(得分:4)
在C#中,0x
前缀表示十六进制表示法。所以VB &H2
的等价物是0x2
。
有问题的行对此值执行按位NOT,然后在结果与intVal
之间执行按位AND。在C#中,~
是按位NOT运算符。所以这一行看起来像C#中的以下内容:
direntEnableEntry.Properties["userAccountControl"].Value = (intVal & ~0x2);
请注意!
(和!=
)是逻辑NOT,与按位NOT不同。