在某些情况下,当我将 Enum 传递给一个方法时,我需要处理它是单个 Enum 值,还是一个标志组合,为此我编写了这个简单的扩展:
VB.Net:
<Extension>
Public Function FlagCount(ByVal sender As System.[Enum]) As Integer
Return sender.ToString().Split(","c).Count()
End Function
C#(在线翻译):
[Extension()]
public int FlagCount(this System.Enum sender) {
return sender.ToString().Split(',').Count();
}
示例用法:
VB.Net:
Dim flags As FileAttributes = (FileAttributes.Archive Or FileAttributes.Compressed)
Dim count As Integer = flags.FlagCount()
MessageBox.Show(flagCount.ToString())
C#(在线翻译):
FileAttributes flags = (FileAttributes.Archive | FileAttributes.Compressed);
int count = flags.FlagCount();
MessageBox.Show(flagCount.ToString());
我只想问是否存在一种更直接和有效的方式,我目前正在做的事情是避免将标志组合表示为字符串然后拆分它。