1

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

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”

为什么?如何解决?

4

3 回答 3

4

因为你已经把它变成了一个常量,它只能是一个编译时常量。

这有效:

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

MSDN

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

更新:您还必须将您的命名空间从更改Enum为不同的名称。

于 2013-07-05T10:20:05.983 回答
3

试试这个代码,

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

请记住将文件的名称空间从更改为Enum其他名称

于 2013-07-05T10:21:36.723 回答
1

因为您的命名空间也是Enum。它使编译器感到困惑。试试这个:

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

我基本上完全符合Enum的要求System.Enum.GetNames

于 2013-07-05T10:22:06.710 回答