枚举参数在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) {

    }
}

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...