0

非常に基本的な質問です。を使用してファイルからバイトを読み取りましたByteReader。そのバイトは、2 つの値 (0x42または0x4C) のいずれかです。それに応じて、ブール値を設定したいと思います。今では私はこれを持っています:

byte myByte = br.readByte();
bool myBoolean = true;

if(myByte == 0x4C) myBoolean = true;
else if(myByte == 0x42) myBoolean = false;
else return;

私が避けたいのは、2 つの変数です。bool値を1つだけにしたいのですが。このような

myBoolean = myByte == 0x4C ? true : false;

問題は、この式はチェックするだけで、チェックし0x4cないということです0x42

読み取り位置がインクリメントされるため、ReadByte() は 1 回しか呼び出せません。何か案は?

4

1 に答える 1

1

3 つの異なる結果 ( 、、 ) を持つ 3つの異なる値 ( 0x420x4Cおよびその他)を検討します。したがって、単一の比較では十分ではありません。myBoolean = truemyBoolean = falsereturn

ただし、switch ステートメントを使用してコードを少し整理し、byte変数を回避することもできます。

bool myBoolean;
switch (br.ReadByte()) {
    case 0x4C:
        myBoolean = true;
        break;
    case 0x42:
        myBoolean = false;
        break;
    default:
        return;
}
于 2012-06-27T08:15:52.423 に答える