有时,在阅读其他人的 C# 代码时,我会看到一种方法在单个参数中接受多个枚举值。我一直以为它很整洁,但从未仔细研究过。
好吧,现在我想我可能需要它,但不知道如何
- 设置方法签名以接受此方法
- 使用方法中的值
- 定义枚举
来实现这种事情。
In my particular situation, I would like to use the System.DayOfWeek, which is defined as:
[Serializable]
[ComVisible(true)]
public enum DayOfWeek
{
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6
}
我希望能够将一个或多个 DayOfWeek 值传递给我的方法。我可以按原样使用这个特定的枚举吗?我该如何做上面列出的 3 件事?
当你定义枚举时,只需用 [Flags] 赋予它属性,将值设置为 2 的幂,它就会以这种方式工作。
除了将多个值传递给函数之外,没有其他任何变化。
例如:
[Flags]
enum DaysOfWeek
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
}
public void RunOnDays(DaysOfWeek days)
{
bool isTuesdaySet = (days & DaysOfWeek.Tuesday) == DaysOfWeek.Tuesday;
if (isTuesdaySet)
//...
// Do your work here..
}
public void CallMethodWithTuesdayAndThursday()
{
this.RunOnDays(DaysOfWeek.Tuesday | DaysOfWeek.Thursday);
}
有关更多详细信息,请参阅MSDN 有关枚举类型的文档.
编辑以回应问题的补充。
您将无法按原样使用该枚举,除非您想要执行诸如将其作为数组/集合/参数数组传递之类的操作。这会让你传递多个值。标志语法要求将枚举指定为标志(或以未设计的方式破坏语言)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)