我写了下面的代码,它正在成功编译.
class Program
{
enum Fruits
{
Apple,
Mango,
Banana
}
static void Main(string[] args)
{
Fruits f = new Fruits();
}
}
Run Code Online (Sandbox Code Playgroud)
尽管Fruits是一个enum,编译器和解释器允许我写这个.这是否意味着我可以为枚举创建构造函数?如果是的话怎么样?
不,你不能.
new Fruits()将返回默认值(与0枚举的基础类型对应的值),它与default(Fruits)(或Fruits.Apple在您的情况下)相同.
请记住,枚举只是原始类型的包装(int默认情况下).你几乎可以比较new Fruits()到new int().
通常你不使用new Fruits()/ new int()syntax,因为它只是写0或更常见default(T),但你可能想在通用代码中使用它.举个例子:
public T NewInstance<T>()
where T : new()
{
return new T();
}
Run Code Online (Sandbox Code Playgroud)
你可以打电话NewInstance<Fruits>(),然后再回来Fruits.Apple.