0

很基本的问题。我使用ByteReader. 该字节是两个值之一(0x420x4C)。现在取决于我想设置一个布尔值。现在我有这个:

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

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

我要避免的是这两个变量。我只想有一个布尔值。像这样

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

问题是这个表达式只检查0x4c而不是0x42

我只能调用 ReadByte() 一次,因为读取位置增加了。有任何想法吗?

4

1 回答 1

1

您想考虑三个不同的值(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 回答