关于运算符:如何在C#中返回“ not uint”?

How do you return 'not uint' in C#?

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

1
Return (Not (crc32Result))

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

1
return (!(crc32Result));

但是我得到一个编译器错误:

Compiler Error Message: CS0023: Operator '!' cannot be applied to operand of type 'uint'

我需要使用其他运算符代替此运算符吗?

谢谢!


看来您要执行的操作是反转crc32result的位。如果是这样,则需要波浪号?。

1
return (~crc32Result);

参考这个问题。


试试这个:

1
return crc32Result == 0;

或者更清楚地了解我在做什么:

1
return !(crc32Result != 0);

第二个示例所做的是通过" 0为false,非零为true"的原理将其转换为boolean。因此,如果不等于零,它将返回true。然后我用"!"操作员执行"不"操作。您提供的Visual Basic代码显然隐式地执行了第一部分(C / C ++也是如此),但是C#和Java不会。

但这是if并且仅当您正在从函数中寻找布尔返回类型时。如果要进行按位反转,则需要满足以下条件:

1
return (~crc32Result);

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


在C#中,bang(!)用于翻转布尔变量。您是在尝试将上述uInt视为布尔值,还是要执行其他一些反转(可能是所有二进制数字的反转)?

我建议您寻找以下解决方案之一:

1
2
3
return (!(bool)crc32Result);  // treating as bool (0 = false, anything else is true)

return (~crc32Result); //bitwise flipping for all