将枚举类型作为可选参数传递[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将枚举类型作为可选参数传递[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

使用可选参数时,我喜欢将它们默认为Nothing

Sub DoSomething(ByVal Foo as String, Optional ByVal Bar as String = Nothing)
    If Bar IsNot Nothing then DoSomethingElse(Bar)
    DoAnotherThing(Foo)
End Sub

这非常有用,除非您开始使用Enum类型(或Integer和其他数据类型)。在这种情况下,我的Enum列表包含“无”值,如下所示:

Enum MyEnum
    None
    ChoiceA
    ChoiceB
End Enum
Sub DoSomething(ByVal Foo as String, Optional ByVal Bar as MyEnum= MyEnum.None)
    If Bar = MyEnum.None then DoSomethingElse(Bar)
    DoAnotherThing(Foo)
End Sub

它有效,但我正在寻找其他选择。除了在自定义Enum中创建“无”条目的负担之外,这与框架或第三方DLL定义的枚举无关。

答案

在您的示例中,重载更有意义。

Sub DoSomething(ByVal Foo as String, ByVal Bar as MyEnum)
    DoSomethingWithBar(Bar)
    DoSomething(Foo)
End Sub

Sub DoSomething(ByVal Foo as String)
    ' Do something with Foo
End Sub
另一答案

通常情况下,我在起草问题时遇到了几个答案。

这个post.NetDocumentation建议使用可空:

Sub DoSomething(ByVal Foo as String, Optional ByVal Bar as Nullable(Of MyEnum) = Nothing)
    If Bar IsNot Nothing then DoSomethingElse(Bar)
    DoAnotherThing(Foo)
End Sub

要么,

Sub DoSomething(ByVal Foo as String, Optional ByVal Bar as Nullable(Of MyEnum) = Nothing)
    If Bar IsNot Nothing then DoSomethingElse(Bar)
    DoAnotherThing(Foo)
End Sub

从来没有使用过这个,所以任何评论/警告都是这样的,非常欢迎!

以上是关于将枚举类型作为可选参数传递[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将空数组作为可选参数的默认值传递[重复]

C#中的枚举类型如何传递参数呢?

GraphQL - 将枚举值作为参数直接传递给突变?

在 C# 中使用枚举作为泛型类型参数 [重复]

将枚举类型传递给具有整数值的转换器[重复]

可以在 Swift 中将枚举类型名称作为参数传递吗?