【问题标题】:Loop through enumeration遍历枚举
【发布时间】:2010-05-03 20:50:41
【问题描述】:

遍历枚举以查找匹配值的最佳方法是什么?

string match = "A";

enum Sample { A, B, C, D }

foreach(...) {
  //should return Sample.A
}

【问题讨论】:

  • foreach 什么?你到底想测试什么?
  • 我正在查看“A”是否存在并返回匹配的枚举数值

标签: c# .net asp.net enums


【解决方案1】:

你正在寻找Enum.Parse:

Sample e = (Sample)Enum.Parse(typeof(Sample), match);

您可以通过调用 Enum.GetValuesEnum.GetNames 来循环访问这些值。

【讨论】:

    【解决方案2】:
    Enum.Parse(typeof(Sample), "A");
    

    【讨论】:

      【解决方案3】:

      使用Enum.Parse

      (Sample)Enum.Parse(typeof(Samples), "A"); //returns Sample.A
      

      【讨论】:

      • @Mark Byers,这只是一个示例语句。让他休息一下。
      【解决方案4】:
      public Sample matchStringToSample(string match)
      {
          return (Sample)Enum.Parse(typeof(Sample), match);
      }
      

      您必须处理字符串匹配不是有效枚举值的情况。在这种情况下,Enum.Parse 会抛出 ArgumentException

      【讨论】:

      • 如果您预计它有时会失败,请使用 Enum.TryParse()
      • @Nelson:Enum.TryParse 是 .Net 4.0 的新手。
      猜你喜欢
      • 2010-12-12
      • 2011-09-01
      • 2015-08-13
      • 1970-01-01
      • 2016-06-08
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      相关资源
      最近更新 更多