一般指枚举值
本文关键字:枚举 一般指 | 更新日期: 2023-09-27 18:34:00
我的应用程序中有多个enum
枚举多个不同的机器状态。在某些时候,命令和状态被传递给 IO 类,该类应该简单地获取命令和枚举值(作为 int)并将其写入 IO 端口。
我正在尝试设计一个函数声明,该声明获取并enum
值,尽管不是来自特定enum
。我知道我可以让它取一个int
值并使用它,但我希望函数的用户被迫传递并enum
值。这可能吗?
public void WriteCommand(String command, int value) // Works technically
public void WriteCommand(String command, enum value) // Forces enum value to be passed
只是为了清楚说我有两个枚举
public enum MyEnum1 { VALUE1, VALUE2 };
public enum MyEnum2 { VALUE3, VALUE4 };
我希望能够像这样将值从每个枚举传递给函数
WriteCommand("DoSomething", MyEnum1.VALUE1);
WriteCommand("DoSomething", MyEnum2.VALUE3);
收到后,我会将enum
值转换为 int 进行写入。
只需将代码从
public void WriteCommand(String command, enum value) // Forces enum value to be passed
自
public void WriteCommand(String command, Enum value) // Forces enum value to be passed
你会很高兴的;-)
System.Enum
表示所有创建的枚举的基类。因此,您将能够传入任何创建的枚举,但不能传递其他枚举。
您还应该注意以下几点:
如果未显式声明基础类型,则使用 Int32。
因此,您可能捕获了一个枚举,其中基类不是Int32
。在这种情况下,在将值写入设备之前,应注意如何解释和强制转换值。
只需将参数设为Enum
即可。
如果你想严格要求:
public void WriteCommand(String command, Enum value)
{
Console.WriteLine(value.ToString());
}
或更通用的,接受 int 和其他值类型
public void WriteCommand<T>(String command, T value) where T : struct
{
Console.WriteLine(value.ToString());
}