ger*_*wry 1 c# alias compiler-errors syntax-error visual-studio-2015
为什么将枚举更改为E num会导致编译错误?
通常在c#中,可以使用ac#type或其.NET等价物.
例:
string jeff = "Atwood"; // string type
String name = "Jeff"; // System.String
Run Code Online (Sandbox Code Playgroud)
" 字符串(C#参考) "
"的字符串类型表示的零个或更多的Unicode字符的序列.
字符串为一个别名字符串在.NET Framework".
以下.NET控制台应用程序成功" enum ":
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Nothing
Something
Press ENTER to Exit
Run Code Online (Sandbox Code Playgroud)
但是,将" enum " 更改为" E num"会导致多个错误:
Enum FirstEnum { Nothing = 0, Something = 666 };
Run Code Online (Sandbox Code Playgroud)
错误:
'invalid-global-code.FirstEnum':
property or indexer must have at least one accessor
Run Code Online (Sandbox Code Playgroud)
请解释.
发生这种情况是因为string是String的别名,但枚举与Enum不同:
该枚举关键字定义是继承自一种新型System.Enum与成员静态字段.
enum MyEnum
{
Member
}
Run Code Online (Sandbox Code Playgroud)
是等价的(我认为它实际上是真正生成的CIL):
public class MyEnum : System.Enum
{
public static int Member;
}
Run Code Online (Sandbox Code Playgroud)
如果你改用Enum:
Enum MyEnum
{
Member
}
Run Code Online (Sandbox Code Playgroud)
就像:
StringBuilder MyEnum
{
Member
}
Run Code Online (Sandbox Code Playgroud)
这显然对编译器没有意义.
| 归档时间: |
|
| 查看次数: |
2442 次 |
| 最近记录: |