为什么将枚举更改为 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)"
答案 0 :(得分:5)
这是因为字符串是字符串的别名,但枚举与枚举不同:
enum 关键字定义了一种新类型,该类型继承自 System.Enum ,其成员为静态字段。
enum MyEnum
{
Member
}
是等效的(我认为它实际上是真正生成的CIL):
public class MyEnum : System.Enum
{
public static int Member;
}
如果您使用枚举:
Enum MyEnum
{
Member
}
就像:
StringBuilder MyEnum
{
Member
}
这显然对编译器没有意义。