我应该重新使用结构吗?

时间:2016-01-16 00:41:17

标签: c# struct

我知道结构是值类型并且存在于堆栈中,除非在引用类型中声明为字段,并且它们在该位置的内存中包含它们的值。我想知道的是,在迭代循环中重用已声明的结构是否有效或值得,而不是每次都创建一个新结构。如果有的话,堆栈实例化变量的代价是多少?另外,作为一个有点相关的问题,如果我要在方法调用中实例化一个结构,它是否会创建结构的本地副本,或者在执行时首先创建它作为方法的参数?

关于声明:

// Is this worth doing...
MyStruct ms = new MyStruct(0);
for (int i = 0; i< 10000; i++)
{
    ms.num = i;
    // Do something with ms
}

// ...over this:    
for (int i = 0; i< 10000; i++)
{
    MyStruct ms = new MyStruct(i);
    // Do something with ms
}


public struct MyStruct
{
    public int num;

    public MyStruct(int myNum)
    {
        num = myNum;
    }
}

实例化:

for (int i = 0; i< 10000; i++)
{
    MyMethod(new MyStruct(i));
    // Does the MyStruct live in scope?
}

0 个答案:

没有答案