c#切换机箱不工作

时间:2017-12-08 16:59:32

标签: c# switch-statement typeconverter

我正在尝试使用switch

来检查值
private void btnInput1Rste_Click(object sender, EventArgs e)
{
    switch (sender == btnInput1Rste)
    {
        case "1": currentButtonPressedRste = 1;
            break;
    }
}

它给出如下错误:

  

can't convert type 'string' to 'bool'

但是,当我尝试将其转换为布尔值时,它会说:

  

a constant value is expected

我该如何解决?

当它工作时,它应该检查3个值。 (不只是这个switch

4 个答案:

答案 0 :(得分:5)

sender == btnInput1Rste是一个布尔表达式;结果是truefalse。坦率地说,你可能只想要if / else。您可能可以使用switch进行case true:但是......

答案 1 :(得分:2)

你的开关格式奇怪,我想你想看看btnInput1Rste是否等于发件人?你也没有默认情况。

 switch (sender)
    {
        case btnInput1Rste: 
             //This button was the sender
            break;
        default:
            break;
    }

答案 2 :(得分:0)

这是问题所在。 switch语句的括号中的任何类型都必须与case的类型相匹配。在这里,括号中有一个布尔值。您的情况是检查字符串类型。 Bool和字符串不能隐式转换为彼此,因此错误。

答案 3 :(得分:0)

选项1使用switch,我们假设你的btnInput1Rste是一个const字符串,如:

    //..
    public const string btnInput1Rste= "some_value";

    ///...then this should work:
    switch (sender)
        {
            case btnInput1Rste:
                //enter code here
                break;
        }

选项2,其中btnInput1Rste不必是常量字符串:

if(sender == btnInput1Rste){
      //enter code here
}