您如何返回';非uint';在C#中?

您如何返回';非uint';在C#中?,c#,operators,code-conversion,C#,Operators,Code Conversion,我有一些用VB编写的代码,内容如下: Return (Not (crc32Result)) 我正在尝试将其转换为C#,这就是我所拥有的: return (!(crc32Result)); 但是,我得到一个编译器错误: 编译器错误消息:CS0023:运算符“!”无法应用于“uint”类型的操作数 我需要使用另一个操作符而不是这个操作符吗 谢谢 看起来您试图做的是反转crc32result的位。如果是这样,您需要tilde操作符~ return (~crc32Result); 参考在C#中,b

我有一些用VB编写的代码,内容如下:

Return (Not (crc32Result))
我正在尝试将其转换为C#,这就是我所拥有的:

return (!(crc32Result));
但是,我得到一个编译器错误:

编译器错误消息:CS0023:运算符“!”无法应用于“uint”类型的操作数

我需要使用另一个操作符而不是这个操作符吗


谢谢

看起来您试图做的是反转crc32result的位。如果是这样,您需要tilde操作符~

return (~crc32Result);
参考

在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为假,非零为真”的原则将其转换为布尔值。所以如果它不等于零,它将返回true。然后我用“!”操作员执行“不”操作。您给出的Visual Basic代码显然隐式地完成了第一部分(C/C++也是如此),但C#和Java不会

但这是当且仅当您正在从函数中查找布尔返回类型时。如果要进行位反转,则需要以下内容:

return (~crc32Result);

在这种情况下,“~”运算符将转换为另一位模式。

快速解释会很有帮助……在VB.NET中,not可以用作逐位运算符。在这种情况下,它执行的是否定(翻转或反转位)。答案提供了C#等价物。