【问题标题】:Passing An Enum Type As An Argument? [duplicate]将枚举类型作为参数传递? [复制]
【发布时间】:2011-06-23 13:36:17
【问题描述】:

可能重复:
C# enums as function parameters?

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

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

【问题讨论】:

  • 您遇到了什么问题?

标签: c# winforms enums


【解决方案1】:

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

假设你有一个枚举:

enum MyEnum
{
    One,
    Two,
    Three
}

您可以声明如下方法:

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

        // you can iterate over enumValues with foreach
    }

你会这样称呼它:

MyEnumMethod(new MyEnum());

【讨论】:

    【解决方案2】:

    参考Convert Enum To Dictionary

    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));
    }
    

    然后你可以用返回的字典项填充你的 ComboBox。

    请参阅以下内容:

    Dictionary enumeration in C#

    Enum to dictionary

    【讨论】:

      【解决方案3】:

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

      private void Method(Enum tEnum)
      {
          Enum.GetValues(tEnum.GetType());
      }
      

      GetValues 将为您提供该枚举可能的值。

      用法会有点奇怪:

      Method(EnumType.Value)
      

      所以它可能不像其他想法那样适合。

      【讨论】:

        【解决方案4】:

        使用这种方法,你不能像这样添加任何类型的枚举: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
          }
        

        【讨论】:

          【解决方案5】:

          你可以使用:

          Enum.GetValues(typeof(MyEnumType))
          

          然后从中填充组合框项目

          编辑:当然也可以使用反射来获取枚举类型:)

          【讨论】:

            【解决方案6】:

            【讨论】:

            • 我正要发布的内容与该链接末尾的内容完全相同。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-06-22
            • 2023-03-28
            相关资源
            最近更新 更多