为什么我的代码不起作用?
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'
为什么呢?如何解决?
答案 0 :(得分:4)
因为你已经使它成为一个只能是编译时常量的常量。
这有效:
enum Fruits { Apple, Orange, Peach }
static readonly int FruitCount = Enum.GetNames(typeof(Fruits)).Length;
常量是不可变的值,它们在编译时是已知的,并且在程序的生命周期内不会更改。
更新:您还必须将名称空间从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}}
的枚举