为什么" Enum"当" enum"时无法编译在c#.NET中取得成功?

时间:2016-07-15 23:58:49

标签: c# visual-studio-2015 compiler-errors syntax-error alias

为什么将枚举更改为 E num导致编译错误?

通常在c#中,可以使用c#类型或其.NET等价物。

示例:

string jeff = "Atwood";  // string type
String name = "Jeff";    // System.String

" string (C# Reference)"
" 字符串类型表示零个或多个Unicode字符的序列  字符串是.NET Framework中 String 的别名。"

以下.NET控制台应用程序成功执行" 枚举":

using System;

namespace UnhappyWithSystemEnum
{
    enum FirstEnum { Nothing = 0, Something = 666 };

    class CapitalE
    {
        static void Main(string[] args)
        {
            Console.WriteLine(FirstEnum.Nothing);
            Console.WriteLine(FirstEnum.Something);
            Console.WriteLine("Press ENTER to Exit");
            Console.ReadLine();
        }
    }
}

输出:

Nothing
Something
Press ENTER to Exit

然而,更改" 枚举"到" E num"导致多个错误:

    Enum FirstEnum { Nothing = 0, Something = 666 };

错误:

'invalid-global-code.FirstEnum':
    property or indexer must have at least one accessor

请解释。

MSDN参考文献:
" Enum Class"
" enum (C# Reference)"

1 个答案:

答案 0 :(得分:5)

这是因为字符串字符串的别名,但枚举枚举不同:

enum 关键字定义了一种新类型,该类型继承自 System.Enum ,其成员为静态字段。

enum MyEnum
{
    Member
}

是等效的(我认为它实际上是真正生成的CIL):

public class MyEnum : System.Enum
{
    public static int Member;
}

如果您使用枚举

Enum MyEnum
{
     Member
}

就像:

StringBuilder MyEnum
{
    Member
}

这显然对编译器没有意义。