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 权举可以放在类内或类外,但是放在内类不符合一般情况下的调用规则,所以以后写程序尽量放在类外就好了。