查找枚举C#中定义的项目总数

时间:2013-07-05 10:17:48

标签: c#

为什么我的代码不起作用?

using System;

namespace Enum
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Test.FruitCount);
    }
}

public class Test
{
    enum Fruits { Apple, Orange, Peach }
    public const int FruitCount = Enum.GetNames(typeof(Fruits)).Length;
}
}

我收到了错误

  

无法解析符号'GetNames'

为什么呢?如何解决?

3 个答案:

答案 0 :(得分:4)

因为你已经使它成为一个只能是编译时常量的常量。

这有效:

enum Fruits { Apple, Orange, Peach }
static readonly int FruitCount = Enum.GetNames(typeof(Fruits)).Length;

MSDN

  

常量是不可变的值,它们在编译时是已知的,并且在程序的生命周期内不会更改。

更新:您还必须将名称空间从Enum更改为其他名称。

答案 1 :(得分:2)

试试这段代码,

public int fruitCount = Enum.GetValues(typeof(Fruits)).Length;

请记住将文件的命名空间从Enum更改为elese

答案 2 :(得分:1)

因为您的命名空间也是枚举。它混淆了编译器。试试这个:

namespace Enum
{
    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            Console.WriteLine(test.FruitCount);
        }
    }

    public class Test
    {
        enum Fruits { Apple, Orange, Peach }
        public int FruitCount
        {
            get
            {
                return System.Enum.GetNames(typeof(Fruits)).Length;
            }
        }
    }
}

我基本上完全符合<{1}}

枚举