Enum 权举最好放在类之外

Enum 权举最好放在类以外


Enum 权举能够灵活存储不同的值,避免代码中充斥大量无法解释的数字。虽然无论放在类体内还是类体外,都能调用,但最好能够放在类体以外,这样调用更加灵活。

假设此处有两个 Enum ,分别放置在类体内外,在构造函数中我们传入两个参数调用 Enum 的值。

class TestEnum
    {
        enum theFirstEnum
        {
            one,
            two,
            three,
        }
        public theFirstEnum thefirstEnum { get; set; }
        public theSecondEnum thesecondEnum { get; set; }
        public TestEnum(theFirstEnum,one,theSecondEnum two)
        {
            this.thefirstEnum = one;
            this.thesecondEnum = two;
        }
        public string Value
        {
            get
            {
                return "1: " + thesecondEnum.ToString() + ";2: " + thesecondEnum.ToString();
            }
        }
        
    }
    enum theSecondEnum
    {
        ONE,
        TWO,
        THREE,
    }


这样的构造在实际调用中是不合法的,编译器会报错。

比如窗体的调用函数如下:

private void button1_Click(object sender, EventArgs e)
        {
            TestEnum testEnum = new TestEnum((theFirstEnum)random.Next(3),(theSecondEnum)random.Next(3));
            MessageBox.Show(testEnum.Value);
        }

Enum 权举最好放在类之外Enum 权举最好放在类之外


将构造函数关于第一个 Enum 部分去掉,又恢复了正常。

 public TestEnum(theSecondEnum two)
        {
         //   this.thefirstEnum = one;
            this.thesecondEnum = two;
        }


那么第一个 Enum 是不是完全不能调用了呢?其实不然,我们可以通过另外一种方法。

在类中添加返回 string 类型的方法:

public string returnEnum()
        {
            string reEnum = "";
            theFirstEnum theF = new theFirstEnum();
            reEnum += theF.ToString();
            return reEnum;
        }


并在窗体函数中添加:

private void button2_Click(object sender, EventArgs e)
        {
            TestEnum testEnum = new TestEnum((theSecondEnum)random.Next(3));
            MessageBox.Show(testEnum.returnEnum());
        }


结果如下:

Enum 权举最好放在类之外


Enum 权举最好放在类之外

综上所述,Enum 权举可以放在类内或类外,但是放在内类不符合一般情况下的调用规则,所以以后写程序尽量放在类外就好了。