c# 如何将值放在循环之外?

标签 c#

我开始学习 C#。我想知道如何将值放在 for 循环之外,如下所示:

int firstByte;
if (bytes == 1)
{                          
    for (int j = 0; j < bytes; j++)
    {
        firstByte = comBuffer[j];
        if (firstByte == 0x06)
        {
            checkStatus = 2;
        }
   }
}

bytescomBuffer的长度,comBuffer的值为[0x01,0x06]。这是将 if(firstbyte == 0x06) 放在 for 循环之外的方法吗?我想将它放在 for 循环之外,因为我想在循环之外使用 if(firstbyte) 添加另一个 if-else

我的期望是这样的:

int firstByte;
if (bytes == 1)
{                          
    for (int j = 0; j < bytes; j++)
    {
        firstByte = comBuffer[j];
        if (firstByte == 0x06)
        {
            checkStatus = 2;
        }
   }
}

if(firstByte == 0x06)
{ 
   string status = "OK";
}

当我尝试时,程序显示一条警告消息 “unasigned value .....”。 有什么解决方案或建议吗?

最佳答案

让我们先了解一下问题是什么。

int firstByte;
**if (bytes == 1)**
{                          
for (int j = 0; j < bytes; j++)
{
    firstByte = comBuffer[j];
    if (firstByte == 0x06)
    {
        checkStatus = 2;
    }
}
}

if(firstByte == 0x06)
{ 
 string status = "OK";
}

只有当 bytes 为 1 时,firstByte 才会被赋值,所以 firstByte 有可能没有被赋值任何东西,并且在外部 if 条件下被检查。您可以通过为 firstByte 分配一个值(如 0 或不干扰您的逻辑的其他值)来轻松避免此问题。

int firtByte = 0; 

将解决您的问题。

关于c# 如何将值放在循环之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39586197/

相关文章:

c# - 从表单 c# 中转义大括号输入

c# - String 和 Char 类型如何存储在 .NET 的内存中?

c# - OAuth 2.0 不适用于本地 IIS

c# - 使用鼠标arduino通过PC控制两个伺服系统

C# 下载文件不起作用

c# - Wait Handles 是否释放线程获取的锁?

c# - DbMigration 使用数据移动列

javascript - 获取 div javascript 文件中的按钮

c# - WPF 颜色定义困惑

c# - 如何创建事件( Canvas 移动)C# WPF?