C# 将字符串拼接在一起以使用运算符'==';

C# 将字符串拼接在一起以使用运算符'==';,c#,C#,我有8个按钮,它们几乎都做相同的事情,将我按下的按钮的0更改为1,然后单击&DoutState0我希望这样做,而不必复制和粘贴相同的代码位8次 int DoutState0 = 0; // 0(off) or 1(on) private void Dout0_Click(object sender, EventArgs e) { if (DoutState0 == 0) { DoutState0 = 1;

我有8个按钮,它们几乎都做相同的事情,将我按下的按钮的
0
更改为
1
,然后单击
&
DoutState0
我希望这样做,而不必复制和粘贴相同的代码位8次

    int DoutState0 = 0; // 0(off) or 1(on)

    private void Dout0_Click(object sender, EventArgs e)
    {
        if (DoutState0 == 0)
        {
            DoutState0 = 1;
        }
        else
        {
            DoutState0 = 0;
        }
    }
所以我想到了这段代码

    int DoutNumber = 0; // 0,1,2,3,4,5,6,7 

    int DoutState0 = 0; // 0(off) or 1(on)
    int DoutState1 = 0;
    int DoutState2 = 0;
    int DoutState3 = 0;
    int DoutState4 = 0;
    int DoutState5 = 0;
    int DoutState6 = 0;
    int DoutState7 = 0;

    public void TogleDOUT()
    {
        string CheckDout = $"DoutState{DoutNumber}";
        Console.WriteLine(CheckDout);  // prints 'DoutState0' and not '0' as expected 

        if (CheckDout == 0)
        {
            //update CheckDout from '0' to '1'
        }
        else
        {
            //update CheckDout from '1' to '0'
        }

    }


    private void Dout0_Click(object sender, EventArgs e)
    {
        DoutNumber = 0;
        TogleDOUT();
    }
但是获取此错误
运算符'=='不能应用于'string'和'int'类型的操作数。


我不确定我做错了什么

如果DoutNumber==0,则0需要用引号括起来,如
“0”
,因为它将int与字符串进行比较

消息会告诉您做错了什么。您正在尝试将字符串与int进行比较。CheckDout是字符串,0是int。您不确定是什么意思?您无法将字符串
“DoutState0”
与数字
0
进行比较。另一方面,最简单的方法是为每个按钮将
控件.Tag
设置为不同的数字,然后在公共处理程序中进行检查。您正在使用的方法只是创建一个字符串,就像调用
string.Format(“DoutState{0}”,DoutNumber)
一样。它不会神奇地计算具有匹配名称的私有字段。与其使用8个变量,不如使用数组或列表并访问它,例如使用
doutState[4]=0
。这样,您可以轻松地循环数组中的所有元素,并将它们设置为任意值,而不是编写8次相同的赋值。它永远不会等于“0”.
DoutNumber
是一个int:
int DoutNumber