你如何在C#中返回'not uint'?

时间:2009-07-24 19:08:57

标签: c# operators code-conversion

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

Return (Not (crc32Result))

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

return (!(crc32Result));

但是我收到编译错误:

  

编译器错误消息: CS0023:运营商'!'不能应用于'uint'类型的操作数

我需要使用不同的运算符而不是此运算符吗?

谢谢!

3 个答案:

答案 0 :(得分:15)

看起来你要做的就是扭转crc32result的位。如果是这样,你需要代字号运算符〜。

return (~crc32Result);

参考this question.

答案 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);

在这种情况下,'〜'运算符会转换为其他位模式。