假设我有这段代码:
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)怎么样?
由于
答案 0 :(得分:3)
Array
是一种引用类型,因此您只需将引用复制到数组实例。
答案 1 :(得分:2)
C#中的数组是引用类型。分配等项目会创建引用与值的副本。在(1)的末尾,您最终得到了对container
注意:在C#中,更好地说“引用对象”与“引用内存”
答案 2 :(得分:1)
(1)复制数组的引用
(2)相同
数组变量是引用类型,无论它们的底层元素类型如何,因此每当您将数组变量分配给另一个时,您只是复制引用。