通过枚举类型作为参数?

soo*_*ise 13 c# enums winforms

可能重复:
C#枚举作为函数参数?

我想知道如何将枚举类型作为方法参数传递.

我正在尝试创建一个通用方法,它将采用一个组合框,枚举,并用枚举的每个项填充组合框.

Akr*_*hda 9

参考将Enum转换为字典:

public static IDictionary<String, Int32> ConvertEnumToDictionary<K>()
{
 if (typeof(K).BaseType != typeof(Enum))
 {
   throw new InvalidCastException();
 }

 return Enum.GetValues(typeof(K)).Cast<Int32>().ToDictionary(currentItem => Enum.GetName(typeof(K), currentItem));
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用返回的字典项填充ComboBox.

请参阅以下内容:

C#中的字典枚举

枚举到字典


Ran*_*ric 8

你可以像这样传递一个枚举:

private void Method(Enum tEnum)
{
    Enum.GetValues(tEnum.GetType());
}
Run Code Online (Sandbox Code Playgroud)

并且GetValues将为您提供该枚举可能的值.

用法有点奇怪:

Method(EnumType.Value)
Run Code Online (Sandbox Code Playgroud)

所以它可能不如其他想法.


小智 8

我认为最好用一个例子来解释:

假设你有一个枚举:

enum MyEnum
{
    One,
    Two,
    Three
}
Run Code Online (Sandbox Code Playgroud)

您可以声明一个方法,如:

    public static void MyEnumMethod(Enum e)
    {
        var enumValues = Enum.GetValues(e.GetType());

        // you can iterate over enumValues with foreach
    }
Run Code Online (Sandbox Code Playgroud)

你会这样称呼它:

MyEnumMethod(new MyEnum());
Run Code Online (Sandbox Code Playgroud)


age*_*t-j 5

使用此方法,您可以添加任何类型的枚举,如下所示:AddItems(myCombobox, typeof(Options))

  public void AddItems (ComboBox cboBox, Type enumType)
  {
     cboBox.Items.AddRange(Enum.GetValues (enumType).Cast<object> ().ToArray ());
  }

  enum Options
  {
     Left, Right, Center
  }
Run Code Online (Sandbox Code Playgroud)