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 部分去掉,又恢复了正常。
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 权举可以放在类内或类外,但是放在内类不符合一般情况下的调用规则,所以以后写程序尽量放在类外就好了。
原文:http://blog.csdn.net/roller44/article/details/44899541