Sha*_*e.C 1 c# parameters if-statement
我遇到了一个简单的循环,它似乎进入循环而不管我查询的参数,以确定循环是否应该处理.下面是循环;
if (result[4] == 0x01 || result[5] == 0x01 || result[6] == 0x01 || result[7] == 0x01 || result[8] == 0x01 || result[9] == 0x01 & deviceState == false)
{
deviceState = true;
mainUI.setAlarmColour(result, device);
}
Run Code Online (Sandbox Code Playgroud)
注意:我已经尝试了"&"和"&&"作为最终参数,但两者都没有区别.
使用此循环,即使deviceState设置为true,它也会继续进入循环.但是,如果我使用以下循环它会停止此问题:
if (result[4] == 0x01 || result[5] == 0x01 || result[6] == 0x01 || result[7] == 0x01 || result[8] == 0x01 || result[9] == 0x01)
{
if (deviceState == false)
{
deviceState = true;
mainUI.setAlarmColour(result, device);
}
}
Run Code Online (Sandbox Code Playgroud)
第二个循环解决了问题,它不再进入循环,这意味着我的函数没有被调用.
我错过了一些基本的东西吗?我已经尝试过messageBoxes来验证它是错误的并且它们以我期望的方式返回,但它仍然进入第一个循环.
首先,它&&就像你已经尝试过(&是一个按位运算符),但是你应该将你OR的组合在一起并拥有最终的AND独立,如下所示:
if (
(result[4] == 0x01 || result[5] == 0x01 || result[6] == 0x01 ||
result[7] == 0x01 || result[8] == 0x01 || result[9] == 0x01)
&& deviceState == false)
{
deviceState = true;
mainUI.setAlarmColour(result, device);
}
Run Code Online (Sandbox Code Playgroud)
请注意,您也deviceState == false可以简单地更改为!deviceState(如果它不可为空bool).!为了比较,将false翻译为true,所以你基本上说的是完全相同的东西,虽然更短.
(请忽略丑陋的格式,只是想让它更清晰)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |