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 |