【问题标题】:Convert Enumeration to an Integer Array With an Extension Method使用扩展方法将枚举转换为整数数组
【发布时间】:2013-07-26 07:22:23
【问题描述】:

假设有一个枚举:

Public Enum MyEnum
    Value1 = 100
    Value2 = 200
    Value3 = 300
End Enum

如何实现扩展方法来获取此枚举的所有值的整数数组?

Dim ints As Integer() = GetType(MyEnum).ToIntArray()
' result: ints = {100, 200, 300}

(我已经看到扩展方法必须基于类型。)

【问题讨论】:

标签: vb.net generics extension-methods enumeration


【解决方案1】:
<System.Runtime.CompilerServices.Extension()> _
Public Function ToIntArray(Of T As Type)(a As T) As Integer()
    Return [Enum].GetValues(a).Cast(Of Integer)().ToArray
End Function

【讨论】:

  • 我会添加检查类型是否为枚举a.IsEnum
  • @Styxxy:是的,我也想过这个。但实际上这是在 [Enum].GetValues() 中隐式完成的,不是吗?
  • 是的,隐含的。
  • 我想知道数组中的顺序是否会被定义。答案是肯定的,但令人惊讶的是它不是“定义的”。它是(来自docs):数组的元素按枚举常量的二进制值排序(即按它们的无符号大小)。
猜你喜欢
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
相关资源
最近更新 更多