我可以为Enum创建构造函数吗?

yog*_*ogi 6 .net c#

我写了下面的代码,它正在成功编译.

class Program
{
        enum Fruits
        {
            Apple,
            Mango,
            Banana
        }

        static void Main(string[] args)
        {
            Fruits f = new Fruits();
        }
}
Run Code Online (Sandbox Code Playgroud)

尽管Fruits是一个enum,编译器和解释器允许我写这个.这是否意味着我可以为枚举创建构造函数?如果是的话怎么样?

Luc*_*ski 5

不,你不能.

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.