我有一些用VB编写的代码,内容如下:
Return (Not (crc32Result))
我正在尝试将其转换为 C#,这就是我所拥有的:
return (!(crc32Result));
但是我得到一个编译器错误:
编译器错误消息: CS0023:运算符“!” 不能应用于“uint”类型的操作数
我需要使用其他运算符来代替这个运算符吗?
谢谢!
我有一些用VB编写的代码,内容如下:
Return (Not (crc32Result))
我正在尝试将其转换为 C#,这就是我所拥有的:
return (!(crc32Result));
但是我得到一个编译器错误:
编译器错误消息: CS0023:运算符“!” 不能应用于“uint”类型的操作数
我需要使用其他运算符来代替这个运算符吗?
谢谢!
在 C# 中,bang(!) 用于翻转布尔变量。您是否尝试将上面的 uInt 视为布尔值,或者执行其他一些反转(可能是所有二进制数字的反转)?
我建议其中之一是您正在寻找的解决方案:
return (!(bool)crc32Result); // treating as bool (0 = false, anything else is true)
return (~crc32Result); //bitwise flipping for all
试试这个:
return crc32Result == 0;
或者更清楚我在做什么:
return !(crc32Result != 0);
第二个示例所做的是通过“0 为假,非零为真”的原则将其转换为布尔值。因此,如果它不等于 0,它将返回 true。然后我使用“!” 运算符来做“不”操作。您提供的 Visual Basic 代码显然隐含地执行了第一部分(C/C++ 也是如此),但 C# 和 Java 不会。
但这是当且仅当您正在从函数中寻找布尔返回类型时。如果您正在执行按位反转,那么您需要以下内容:
return (~crc32Result);
在这种情况下,“~”运算符会转换为其他位模式。