如何在 C# 中使用字节常量作为 switch case?

How do I use byte constants as switch cases in C#?

我正在开发一个需要尽可能 low-bandwidth 的网络协议。因此,我决定不对每种消息类型使用 header 即 string,例如 "connect""move""disconnect",而是最好使用 byte.

这是我目前所拥有的片段:

// Message types
public static readonly byte CONNECT = 100;
public static readonly byte MOVE = 101;
public static readonly byte DISCONNECT = 102;

现在我在别处有:

switch (in_message.ReadByte())
{
    case CONNECT: Connect(); break;
    case MOVE: Move(); break;
    case DISCONNECT: Disconnect(); break;
}
Client.Recycle(in_message);

Visual Studio好像不太喜欢我用的字节常量,具体报错信息是A constant value is expected.

有什么方法可以让这些字节常量与 switch 语句一起工作?

您拥有的是只读字段,它们不被视为常量值(它们可以由静态构造函数分配给它们)。使用常量代替:

public <b>const</b> byte CONNECT = 100;