c#如何将值置于循环的外部?

c#如何将值置于循环的外部?,c#,C#,我开始学C了。我想知道如何在循环的之外设置一个值,如下所示: int firstByte; if (bytes == 1) { for (int j = 0; j < bytes; j++) { firstByte = comBuffer[j]; if (firstByte == 0x06) { checkStatus = 2; }

我开始学C了。我想知道如何在循环的
之外设置一个值,如下所示:

int firstByte;
if (bytes == 1)
{                          
    for (int j = 0; j < bytes; j++)
    {
        firstByte = comBuffer[j];
        if (firstByte == 0x06)
        {
            checkStatus = 2;
        }
   }
}
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";
}
当我尝试时,程序会显示一条警告消息
“unassigned value…”

有什么解决方案或建议吗?

是的,有两种可能

  • 将int firstByte设为全局
  • firstByte
    指定默认值
  • 如下所示:

    int firstByte=0;
    

    或根据您的要求提供一些其他值


    为什么编译器会显示这样的消息:它们可能是条件
    bytes==1
    的计算结果为false,或者循环跳过循环。在这种情况下,当您尝试在这些条件之外检查时,
    firstByte
    没有赋值。因此,它显示了使其完美的警告

    是的,有两种可能

  • 将int firstByte设为全局
  • firstByte
    指定默认值
  • 如下所示:

    int firstByte=0;
    

    或根据您的要求提供一些其他值


    为什么编译器会显示这样的消息:它们可能是条件
    bytes==1
    的计算结果为false,或者循环跳过循环。在这种情况下,当您尝试在这些条件之外检查时,
    firstByte
    没有赋值。因此,它显示了警告,以使其完美

    在声明时指定默认值

       int firstByte = 0;
    

    在声明时指定默认值

       int firstByte = 0;
    
    第一个字节在赋值时必须有一些值。 例如:

    int firstByte = 1;
    
    Oherwise它不能与if一起使用,因为它在语句中没有要比较的值

    第一个字节在赋值时必须有一些值。 例如:

    int firstByte = 1;
    

    Oherwise它不能与if一起使用,因为它在语句中没有要比较的值。

    当您在代码中声明变量而没有使用值对其进行初始化时,如果您尝试访问该变量,编译器将抛出错误,除非您的代码保证在访问该变量之前将为其赋值。在您的示例中,声明
    intfirstbyte而不为其赋值。直到
    firstByte=comBuffer[j]它才接收到值,它位于if块和for循环内,可以想象,这两个块中的任何一个都可以跳过其主体的执行而不到达该行代码


    使用值初始化firstByte(如
    int firstValue=-1;
    )将解决您的问题。

    当您在代码中声明变量而不使用值初始化它时,如果您尝试访问该变量,编译器将抛出错误,除非您的代码保证在访问该变量之前将为其赋值。在您的示例中,声明
    intfirstbyte而不为其赋值。直到
    firstByte=comBuffer[j]它才接收到值,它位于if块和for循环内,可以想象,这两个块中的任何一个都可以跳过其主体的执行而不到达该行代码


    使用值初始化firstByte(例如
    int firstValue=-1;
    )将解决您的问题。

    在这种情况下,我通常使用空值:

    int? firstByte = null;
    

    在这种情况下,我通常使用nullables:

    int? firstByte = null;
    

    让我们首先了解问题是什么

    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";
    }
    

    会解决你的问题

    让我们先了解问题所在

    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";
    }
    

    会解决你的问题

    在第一个
    if
    块之后的
    if
    块的用途是什么?您能否在声明时给出任何默认值,如
    int firstByte=0
    。查看这是否解决了问题?在第一个
    if
    块之后的
    if
    的用途是什么?您能否在声明时给出任何默认值,如
    int firstByte=0
    。看看这是否解决了问题?