次の C# コードがあります。
byte rule = 0;
...
rule = rule | 0x80;
エラーが発生します:
タイプ 'int' を 'byte' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)
[更新: 質問の最初のバージョンが間違っていました...コンパイラの出力を読み間違えました]
キャストを追加しても問題は解決しません。
rule = rule | (byte) 0x80;
次のように書く必要があります。
rule |= 0x80;
これは奇妙に思えます。|=
オペレーターがオペレーターと異なるのはなぜ|
ですか?
定数をバイトとして扱うようにコンパイラに指示する他の方法はありますか?
@ジョバンニ・ガルボ:はい、いいえ。このコードは、外部デバイスのフラッシュ メモリのプログラミングを処理しており、メモリの 1 バイトを論理的に表しています。後でキャストすることもできましたが、これはより明白に見えました。私の C の伝統があまりにも露骨に表れていると思います!
@ Jonathon Holland : 'as' 構文の方がきれいに見えますが、残念ながら機能していないようです ... 次のようになります。
as 演算子は、参照型または null 許容型で使用する必要があります ('byte' は null 非許容値型です)。