gpt4 book ai didi

C# 发送 Nullable 枚举作为参数

转载 作者:行者123 更新时间:2023-11-30 13:31:58 25 4
gpt4 key购买 nike

我有带值的枚举,我将该枚举设置为 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

最佳答案

如果您的函数知道如何处理枚举的 null 值,请发送 MyEnum?。如果不是,您有两种选择 - 如果您的值为 null,则根本不发送到该方法,或者改为发送默认值。

if (value.HasValue)
Foo(value.Value);

//or, send a default (null coalescing operator)
Foo(value ?? MyEnum.SomeValue);

关于C# 发送 Nullable 枚举作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17019070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com