for (int i = 0; i < 10; i++)
{
    int taco;
    var randy = new Random();
    taco = randy.Next();
}


我对为什么炸玉米饼保留价值感到困惑。基本上,如果我在第一个迭代的“ int taco”处设置一个断点,我会看到taco为0。在第二个迭代中,当我检查它时,taco具有上一次迭代的值,并且可以立即使用它。窗口。有人可以告诉我为什么会这样吗?

最佳答案

这是因为int taco实际上并未创建名为'taco'的int。

当编译器必须编译您的代码时,它将必须分配所需的所有内存。

例如,当您使用C / C ++编写代码时,在声明变量的那一刻,其值未设置为任何值,因此它将保留以前存储的任何值(这可能导致讨厌的bug)。

在C#中,除非事先定义变量,否则编译器将不允许您访问变量。

09-11 22:22