Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将VB.NET中的按位和/或非按位转换为C#_C#_Vb.net_C# To Vb.net - Fatal编程技术网

将VB.NET中的按位和/或非按位转换为C#

将VB.NET中的按位和/或非按位转换为C#,c#,vb.net,c#-to-vb.net,C#,Vb.net,C# To Vb.net,原始代码(VB.NET): 更改代码(C#): 但这给了我一个错误: 接线员‘!’无法应用于“long”类型的操作数 ES_编号的数据类型为long。我试着把它改成int,string等等,但都不起作用 如何解决此问题?和与&相同;你说得对Not在Long前面是一个按位Not运算符。C的等价物是~ C#代码是: curStyle = curStyle & (­~ES_NUMBER); 请查看,解释C#按位运算符。单个与通常是按位运算,但感叹号是逻辑运算。如果需要逻辑AND,则需要使用l

原始代码(VB.NET):

更改代码(C#):

但这给了我一个错误:

接线员‘!’无法应用于“long”类型的操作数

ES_编号的数据类型为long。我试着把它改成int,string等等,但都不起作用


如何解决此问题?

&
相同;你说得对
Not
Long
前面是一个按位Not运算符。C的等价物是
~

C#代码是:

curStyle = curStyle & (­~ES_NUMBER);

请查看,解释C#按位运算符。

单个与通常是按位运算,但感叹号是逻辑运算。如果需要逻辑AND,则需要使用la:

curStyle = curStyle && (!ES_NUMBER); 
或者,如果您需要一点智慧,可以使用瓷砖,并且:

curStyle = curStyle & (~ES_NUMBER);

再一次,浏览文档证明了这一点:

:

逻辑求反运算符(!)。。。为bool定义,当且仅当其操作数为false时才返回true

文档中没有任何关于数值表达式行为的内容,我希望这意味着操作符根本没有定义为使用这些表达式

另一方面:

对于数值表达式,Not运算符反转任何数值表达式的位值,并根据下表在结果中设置相应的位

所以现在的问题是:如何重现VB.NET对C#的“Not”行为?谢天谢地,这并不难:你可以使用

而且,为了更好地衡量,以下是:

对于整数类型,&计算其操作数的按位AND

关键问题是(没有提供答案):
curStyle
是整数还是布尔?您是在试图获取真值(bool、真/假),还是在试图屏蔽位字段中的位

对于前一种情况,
curStyle
是bool(真值),您可以说:

curStyle = curStyle && !ES_NUMBER ;
后一种情况下,
curStyle
是一个整数类型,您希望操作它的位,需要:

curStyle = curStyle & ~Not ES_NUMBER ;

一个单独的“与”符号并不总是有点明智和明智。考虑(true和false)这是一个逻辑的。@ Gabe:是的,我只是在VB中查了<代码>和和<代码>不是< /COD>关键字。有趣的是,它们是隐式工作的。当VB 7在beta版(即VB.NET)时,关于是保持这种方式还是创建显式的BitAnd、BitOr和BitNot运算符,存在着巨大的争论。@Jonathan Allen:隐式工作似乎还可以。我很喜欢,去拿反光镜。它将向您展示此转换和许多其他转换。
~
是按位补码运算符,它翻转操作数中的每一位。ES_数是一个长数。因此(不是ES_数)是一个很长的问题。这反过来意味着如果使用严格的类型检查,curStyle必须是长的
curStyle = curStyle & (­~ES_NUMBER);
curStyle = curStyle && !ES_NUMBER ;
curStyle = curStyle & ~Not ES_NUMBER ;