C# 如何处理结构数组 - 我是否需要分配每个数组元素(就像它是一个类对象数组一样)?
例子:
public struct RGBA { public byte red, green, blue, alpha; }
public RGBA [] colorBuffer = new RGBA [1024*1024];
现在 colorBuffer 是一个指向 RGBA 对象的指针数组,我是否必须分配它们,例如像这样:
for (int i = 0; i < colorBuffer.Length; i++)
colorBuffer [i] = new RGBA ();
或者 colorBuffer 是否指向一个大小为 4 MB 的内存块,包含 1 MB RGBA 结构?
最佳答案
colorBuffer
变量值将是对数组对象的引用。数组对象本身将是单个对象,大小为 4MB(4 字节 * 1024 * 1024)。数组是引用类型,但每个元素 都是值类型。元素值是 RGBA 值 - 它不是指针。
数组将自动为每个元素初始化为default(RGBA)
,您是否不需要执行自己的初始化。
如果你这样做:
RGBA[] other = colorBuffer;
那是只是复制一个引用——这两个变量现在引用同一个数组。
关于c# - 结构数组 - 数组元素是引用类型还是值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7079096/