枚举参数在c#中是可选的吗?

前端之家收集整理的这篇文章主要介绍了枚举参数在c#中是可选的吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经使用 this helpful post来学习如何将枚举值列表作为参数传递.

现在我想知道我是否可以使这个参数可选?

例:

public enum EnumColors
    {
        [Flags]
        Red = 1,Green = 2,Blue = 4,Black = 8
    }

我想调用我的函数接收Enum param,如下所示:

DoSomethingWithColors(EnumColors.Red | EnumColors.Blue)

要么

DoSomethingWithColors()

那我的功能应该是什么样的?

public void DoSomethingWithColors(EnumColors someColors = ??)
 {
  ...
  }

解决方法

是的,它可以是可选的.
[Flags]
public enum Flags
{
    F1 = 1,F2 = 2
}

public  void Func(Flags f = (Flags.F1 | Flags.F2)) {
    // body
}

然后,您可以使用或不使用参数调用您的函数.如果你调用它而没有任何参数,你将得到(Flags.F1 | Flags.F2)作为传递给f参数的默认值

如果您不想拥有默认值但参数仍然是可选的,则可以执行此操作

public  void Func(Flags? f = null) {
    if (f.HasValue) {

    }
}

猜你在找的C#相关文章