質問

C#(3.5)では、次を試します:

byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 & byte2;

そしてエラー132が表示されます:"暗黙的に型 'int'を 'byte'に変換できません。明示的な変換が存在します(キャストを見逃していますか?)」。同じことが起こります|および^。

間違っているのは何ですか?なぜintsについて尋ねられるのですか?バイトに対してブールロジックを実行できないのはなぜですか?

役に立ちましたか?

解決

さまざまな演算子は byte に対して宣言されていません-両方のオペランドが int に昇格され、結果は int になります。たとえば、追加:

byte byte1 = 0x00;
byte byte2 = 0x00;
byte byte3 = byte1 + byte2; // Compilation error

複合割り当ては機能することに注意してください:

byte1 += byte2;

これに関する最近のSO質問がありました。ただし、結果は常に同じサイズである必要があり、論理的に完全に有効な操作であるため、ビット単位の操作では特に面倒です。

回避策として、結果をバイトにキャストすることができます。

byte byte3 = (byte) (byte1 & byte2);

他のヒント

バイト(および短い)型はこれらの演算子を実装しないため

仕様を参照してください:4.1.5

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top