如何在 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;
我正在开发一个需要尽可能 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;