我有一个关于为for循环内的变量赋值的问题.据我所知,当有可能在尚未分配变量时,编译器会发出此错误消息,如Microsoft所述.
请注意,当编译器遇到可能导致使用未分配变量的构造时,即使您的特定代码没有,也会生成此错误.
我的代码看起来像这样:
static void Main(string[] args)
{
int i;
for (int j = 0; j <= 5; j++)
{
i = j;
}
Console.WriteLine(i.ToString());
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
我认为即使在这个特定的场景中i会被赋值,编译器也不会检查for语句中的实际条件,这意味着它会对待它
for (int j = 0; j <= -1; j++)
Run Code Online (Sandbox Code Playgroud)
一样的?
Hab*_*bib 13
由于您要i为for循环中的变量赋值,因此编译器不够智能,无法确定是否会为其分配任何值,从而导致错误.
一个简单的解决方案是为您的变量分配一些默认值.
int i = 0;
Run Code Online (Sandbox Code Playgroud)
虽然从循环变量值看来控件将进入for循环,但编译器无法确定.
出错的原因是因为语言规范,
在函数成员的可执行代码中的给定位置处,如果编译器可以通过静态流分析证明该变量已被自动初始化或已成为至少一个赋值的目标,则称该变量是明确 赋值的.
评估条件不是静态流程,它将在运行时确定.因此编译器无法确定是否i会分配任何值.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |