C# 如何将 Enum 作为开关?
C# How to Make Enum as a switch?
如何在 switch case 中使用枚举值?
这是我的代码:
//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 这样按钮就可以知道哪个是正确的操作。
在括号之间你不使用 "operations" (这是一个类型)而是一个变量(你在 5 行之前命名为 "value" )。
同样在这种情况下(麻烦的行之后两行)你不需要使用括号(除了你合作的其他人之外他们不会造成伤害)
您当前的示例方法具有硬编码为 "Mult" 的值,但我认为在您的实际实施中会发生变化。
假设 "value" 包含与单击的按钮对应的枚举值,您的 Switch 语句应该打开该变量:
switch(value)
以下是您要查找的内容。
请注意,在声明枚举时,值将自动递增分配。默认情况下,第一个值为零,除非您覆盖它。
在您的 switch 语句中,您使用了您要打开其值的变量 - 在您的 case 值中。
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;
}
}
请注意,在上面的代码中,值将默认为零 - 实际上是一个无效的枚举 - 所以你需要在最后使用默认值。
如何在 switch case 中使用枚举值? 这是我的代码:
//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 这样按钮就可以知道哪个是正确的操作。
在括号之间你不使用 "operations" (这是一个类型)而是一个变量(你在 5 行之前命名为 "value" )。 同样在这种情况下(麻烦的行之后两行)你不需要使用括号(除了你合作的其他人之外他们不会造成伤害)
您当前的示例方法具有硬编码为 "Mult" 的值,但我认为在您的实际实施中会发生变化。
假设 "value" 包含与单击的按钮对应的枚举值,您的 Switch 语句应该打开该变量:
switch(value)
以下是您要查找的内容。
请注意,在声明枚举时,值将自动递增分配。默认情况下,第一个值为零,除非您覆盖它。
在您的 switch 语句中,您使用了您要打开其值的变量 - 在您的 case 值中。
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;
}
}
请注意,在上面的代码中,值将默认为零 - 实际上是一个无效的枚举 - 所以你需要在最后使用默认值。