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