我有带有值的枚举,我将该枚举设置为 Nullable,这是因为我不想添加 MyEnum.NotAvilable 状态。当我将此枚举作为参数发送给函数时,我的问题就开始了,它将显示消息:
"The best overloaded method .."
我想这是因为枚举是可以为空的。唯一可行的是,如果在将枚举发送到函数时,我将枚举转换为 MyEnum 或更改 foo 的签名以接受 MyEnum?而不是 MyEnum。
枚举定义:
public MyEnum? Test
调用带有签名的函数:private void Foo(MyEnum value)
Foo(MyEnum value); // not working
Foo(MyEnum? value); // works
我的问题是 - 在将其发送到 Foo 之前转换为 MyEnum 是不好的做法吗?
if (value.HasValue)
Foo((MyEnum) value); //this makes Foo(MyEnum value) valid