我有一些用VB编写的代码,内容如下:
Return (Not (crc32Result))
我正在尝试将其转换为C#,这就是我所拥有的:
return (!(crc32Result));
但是我收到编译错误:
编译器错误消息: CS0023:运营商'!'不能应用于'uint'类型的操作数
我需要使用不同的运算符而不是此运算符吗?
谢谢!
答案 0 :(得分:15)
答案 1 :(得分:3)
在C#中,bang(!)用于翻转布尔变量。您是否尝试将上面的uInt视为布尔值,或执行其他一些反转(可能是所有二进制数字的反转)?
我建议其中一个是您正在寻找的解决方案:
return (!(bool)crc32Result); // treating as bool (0 = false, anything else is true)
return (~crc32Result); //bitwise flipping for all
答案 2 :(得分:3)
试试这个:
return crc32Result == 0;
或者对我正在做的事情稍微清楚一点:
return !(crc32Result != 0);
第二个例子的作用是将主体“0为假,非零为真”将其转换为布尔值。因此,如果它不等于零,它将返回true。然后我用'!'操作员进行“非”操作。你给出的Visual Basic代码显然隐含了第一部分(就像C / C ++一样),但C#和Java不会。
但这是if和ONLY,如果你正在从函数中寻找一个布尔返回类型。如果您正在进行逐步反转,那么您需要以下内容:
return (~crc32Result);
在这种情况下,'〜'运算符会转换为其他位模式。