C#结构数组和赋值性能
本文关键字:赋值 性能 数组 结构 | 更新日期: 2023-09-27 18:27:59
假设我有这样的代码:
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)怎么样?
感谢
Array
是一个引用类型,所以您只是将引用复制到数组实例。
C#中的数组是一种引用类型。像赋值这样的项会创建引用与值的副本。在(1)的末尾,您得到了存储在container
中的数组的本地引用
注意:在C#中,更恰当的说法是"引用对象"与"引用内存"
(1)复制数组的引用
(2) 相同
数组变量是引用类型,无论其基础元素类型如何,因此无论何时将数组变量分配给另一个,都只是在复制引用。