为什么循环创建具有相同地址的变量?

Ben*_*ius 2 c#

为什么使用此代码:

unsafe
    {
        for (int i = 0; i < 10; i++)
        {
            Double w = new Double();
            Console.WriteLine((IntPtr)(&w));
        }
    }
Run Code Online (Sandbox Code Playgroud)

我总是得到相同的号码?如何在循环中创建新变量?有了新地址吗?

原因,为什么这对我来说是个问题,我需要生成一个随机的双数,然后我在两个对象中使用一个指针(引用那个双).在其中一个对象我正在改变这个值,我希望它也改变其他对象:)

Eri*_*ert 14

从逻辑上讲,每次循环都是一个新变量.但我希望你不要指望每次都有新的变量实际被分配到堆栈!如果循环运行一百万次怎么办?编译器知道它可以重用存储,它确实可以.

如果您想要十个不同的地址,请创建一个包含十个元素的数组,将其固定到位,并获取每个元素的地址.

  • @BenasRadzevicius听起来你可能正在使用C#错误. (3认同)