【发布时间】:2015-03-20 08:00:28
【问题描述】:
我使用this helpful post 学习了如何将枚举值列表作为参数传递。
现在我想知道是否可以将这个参数设为可选?
例子:
public enum EnumColors
{
[Flags]
Red = 1,
Green = 2,
Blue = 4,
Black = 8
}
我想像这样调用接收 Enum 参数的函数:
DoSomethingWithColors(EnumColors.Red | EnumColors.Blue)
或
DoSomethingWithColors()
我的函数应该是什么样子的?
public void DoSomethingWithColors(EnumColors someColors = ??)
{
...
}
【问题讨论】:
-
顺便说一句,几乎每个
enum都应该为0定义一些 值,通常对于Flags,它应该被称为None。跨度> -
[Flags]属性属于enum,而不是枚举字段。 -
如果
default(EnumColors)的值是他在省略可选参数时想要的值,他可以使用public void DoSomethingWithColors(EnumColors someColors = 0)或public void DoSomethingWithColors(EnumColors someColors = default(EnumColors))。或者像@Damien_The_Unbeliever 说的,在枚举类型中引入None=0,,并使用public void DoSomethingWithColors(EnumColors someColors = EnumColors.None)。
标签: c# enums optional-parameters