C# 将字符串拼接在一起以使用运算符'==';
我有8个按钮,它们几乎都做相同的事情,将我按下的按钮的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;
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