c#如何使Enum成为一个开关
本文关键字:一个 开关 何使 Enum | 更新日期: 2023-09-27 18:09:22
如何在开关情况下使用enum值?下面是我的代码:
//public Variables
double rat;
string M;
public enum operations {add = 1, sub = 2, mult = 3, div = 4} ;
bool NewText = false;
private void btnmult_Click(object sender, EventArgs e)
{
//Button "*"
operations value = operations.mult;
rat = Convert.ToDouble(result.Text);
label1.Text = rat + " *";
result.Text = "";
}
private void EqualButton_Click(object sender, EventArgs e)
{
switch (operations) // this is the point which is am confused at
{
case (operations.mult): //multiplyication
TheEqualMult(rat);
label1.Text = "";
break;
}
}
现在我应该在()之间的单词切换后写什么?我想键入的是枚举值,它指的是1或2或3或4,这样按钮就可以知道哪个操作是正确的
您当前的示例方法已将值硬编码为"Mult",但我认为这将在您的实际实现中更改。
假设"value"包含与所单击按钮对应的枚举值,您的Switch语句应该打开该变量:
switch(value)
下面是你要找的。
注意,在声明枚举时,值将自动递增地赋值。默认情况下,第一个值为零,除非您覆盖它。
在你的switch语句中,你使用你要打开的值的变量——在你的例子中是value。
double rat;
string M;
public enum operations
{
add = 1,
sub,
mult,
div
} ;
bool NewText = false;
operations value;
private void btnmult_Click(object sender, EventArgs e)
{
//Button "*"
value = operations.mult;
rat = Convert.ToDouble(result.Text);
label1.Text = rat + " *";
result.Text = "";
}
private void EqualButton_Click(object sender, EventArgs e)
{
switch (value) // use a variable at this point
{
case operations.mult: //multiplication
TheEqualMult(rat);
label1.Text = "";
break;
case operations.add: //addition
....
break;
case operations.sub: //subtraction
....
break;
case operations.div: //division
....
break;
default: //invalid operation
....
break;
}
}
请注意,在上面的代码中,value将默认为零-实际上是一个无效的enum -因此您需要在末尾使用默认值。
在括号之间你不使用"操作"(这是一个类型),而是一个变量(你在5行之前命名为"值")。此外,在某些情况下(在麻烦行之后的两行),您不需要使用括号(它们不会造成伤害,除了与您合作的其他人)