C#结构和赋值性能数组

时间:2012-03-14 15:56:56

标签: c# struct value-type

假设我有这段代码:

struct Normal
{
    public float x;
    public float y;
}

class NormalContainer
{
   public Normal[] Normals
   {
       get; set;
   }
}

class Main
{
     void Run( NormalContainer container )
     {
         Normal[] normals = container.Normals // 1 - see below
         normals[5].x = 4;                    // 3 - see below
         container.Normals = normals;         // 2 - see below
     }
}

(1)是否创建了数组的副本,或者这是对数组占用的内存的引用? (2)怎么样?

由于

3 个答案:

答案 0 :(得分:3)

Array是一种引用类型,因此您只需将引用复制到数组实例。

答案 1 :(得分:2)

C#中的数组是引用类型。分配等项目会创建引用与值的副本。在(1)的末尾,您最终得到了对container

中存储的数组的本地引用

注意:在C#中,更好地说“引用对象”与“引用内存”

答案 2 :(得分:1)

(1)复制数组的引用

(2)相同

数组变量是引用类型,无论它们的底层元素类型如何,因此每当您将数组变量分配给另一个时,您只是复制引用。