2009-07-24 14 views
2

私は次のように読み込み、VBで書かれたいくつかのコードがあります。C#で 'not uint'をどうやって返すのですか?

Return (Not (crc32Result)) 

私はC#のに変換しようとしています、これは私が持っているものです。

return (!(crc32Result)); 

私は、コンパイラのエラーを取得するしかしを:

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

この演算子の代わりに使用する演算子はありますか?

ありがとうございます!

答えて

15

あなたがしようとしているように見えるのは、crc32resultのビットを逆にすることです。もしそうなら、チルダ演算子〜が必要です。

return (~crc32Result); 

は、C#で参考this question.

+2

VB.NETでは、ビットワイズ演算子としては使用できません。この場合、それは否定(ビットの反転または反転)を実行しています。答えはC#の等価物を提供します。 –

+0

Justinに感謝します。それは便利です。 –

3

、bangが(!)ブール変数を反転するために使用されます。上記のuIntをブール値として扱うか、または他の逆転を実行しようとしていますか(おそらく、すべてのバイナリ数字の反転)?

return crc32Result == 0; 

それとも私がやっているものに少し明確にする:

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

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

これを試してみてください:

私はこれらのいずれかをお勧めしたいあなたが探しているソリューションです。

return !(crc32Result != 0); 

第2の例では、「0が偽、0以外が真」というプリンシパルによってブール値に変換されます。したがって、ゼロに等しくなければtrueを返します。そして、私は '!'オペレーターが "not"操作を行うようにします。明示的に与えたVisual Basicコードは最初の部分を暗黙的に(C/C++と同様に)実行しますが、C#とJavaは暗黙的に行いません。

しかし、これは、関数からブール型の戻り値の型を探している場合のみです。あなたはビット単位の反転をやっている場合は、次の必要があります。その場合は

return (~crc32Result); 

、「〜」演算子は、他のビットパターンへの変換を行います。

関連する問題