我有值枚举,我将枚举设置为Nullable,这是因为我不想添加MyEnum.NotAvilable状态.当我将此枚举作为参数发送到函数时,我的问题就开始了,它将显示消息:
"The best overloaded method .."
Run Code Online (Sandbox Code Playgroud)
我想这是因为枚举可以为空.唯一可行的是,如果将枚举发送到函数,我将枚举转换为MyEnum或更改foo的签名以接受MyEnum?而不是MyEnum.
枚举定义如下:
public MyEnum? Test
Run Code Online (Sandbox Code Playgroud)
使用签名调用函数:private void Foo(MyEnum value)
Foo(MyEnum value); // not working
Foo(MyEnum? value); // works
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 在将它发送给Foo之前投射到MyEnum是不好的做法?
if (value.HasValue)
Foo((MyEnum) value); //this makes Foo(MyEnum value) valid
Run Code Online (Sandbox Code Playgroud)
如果您的函数知道如何处理null枚举的值,请发送MyEnum?.如果没有,您有两个选择 - 如果您的值为null,则根本不发送到方法,或者发送默认值.
if (value.HasValue)
Foo(value.Value);
//or, send a default (null coalescing operator)
Foo(value ?? MyEnum.SomeValue);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6136 次 |
| 最近记录: |