Rec*_*ipe 1 c# compiler-construction loops declaration
考虑以下代码:
for (int i = 0; i < 10; i++)
{
bool b; /* #1 */
if (i == 0)
{
b = true; /* #2 */
}
}
Run Code Online (Sandbox Code Playgroud)
我在#1和#2设置了断点.
在第一时间(I = 0),b设定为false在#1和在#2设置为真.
第二次(i = 1),b在#1处为真.
这对我来说没有意义,因为我假设当在第二个循环(i = 1)中开始时,b在声明时应该再次为假.
我假设在第二个循环中#1处的b = false.
有人在乎解释吗?
b您在调试器中看到的值无效.C#需要初始化或分配所有局部变量,然后才能从中读取它们.因此,您在Visual Studio中的调试器中看到的值是无用的,因为它无法读取.没有办法编写一段C#代码,true在第二次迭代中"看到"该值被设置为,因为编译器会将此类用法标记为无效:
for (int i = 0; i < 10; i++)
{
bool b; /* #1 */
Console.WriteLine(b); // <<== INVALID!!! This will not compile.
// error CS0165: Use of unassigned local variable `b'
if (i == 0)
{
b = true; /* #2 */
}
}
Run Code Online (Sandbox Code Playgroud)
如果你添加一个显式初始化false,上面的代码将编译.调试器也会false在断点处显示.
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |