我想避免将我的所有枚举转换为byte
类型。
MyFunction
以byte
为参数。因此,当我想传递我的两个枚举类型MyEnum
和MyOtherEnum
的枚举时,我必须将其转换为byte
(正如我在MyFunction
中调用{ {1}})。
所以我希望我的Main
能够在不进行投射的情况下传递MyFunction
和MyEnum
值。像MyOtherEnum
一样。
这是可能的枚举,还是我必须为静态成员和getter声明一个类?
这是我的代码:
MyFunction(MyEnum.FOO)
答案 0 :(得分:3)
我不知道为什么你需要这样做,但最简单的事情就是编写一组包装器:
MyFunction(MyEnum value)
{
MyFunction((byte)value);
}
MyFunction(MyOtherEnum value)
{
MyFunction((byte)value);
}
MyFunction(byte value)
{
//do something with value
}
答案 1 :(得分:0)
System.Enum
代替byte
来掌握MyFunction。
另一种可能的方法是使用类作为枚举:
public class MyEnum
{
public const byte FOO = 0x00;
public const byte BAR = 0x01;
}
和
public class MyOtherEnum
{
public const byte FOO2 = 1;
public const byte BAR2 = 3;
}
现在你的代码会吃掉
MyFunction(MyEnum.FOO);
MyFunction(MyOtherEnum.FOO2);
但是如果你想让它更像enum,为两者创建一个基类并确保它包含当前值的另一个字节值。 在这种情况下,声明MyFunction如下:
MyFunction(MyEnumBase value)
{
//do smth with value
}
希望它有所帮助, Yanir