c#如何将值置于循环的外部?
我开始学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; }
之外设置一个值,如下所示:
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
。看看这是否解决了问题?