struct - array元素的数组是引用还是值类型?

kar*_*erx 2 c#

C#如何处理struct数组 - 我是否需要分配每个数组元素(就好像它是一个类对象数组)?

例:

public struct RGBA { public byte red, green, blue, alpha; }

public RGBA [] colorBuffer = new RGBA [1024*1024];
Run Code Online (Sandbox Code Playgroud)

现在colorBuffer是一个指向RGBA对象的指针数组,我是否必须分配它们,例如:

for (int i = 0; i < colorBuffer.Length; i++)
    colorBuffer [i] = new RGBA ();
Run Code Online (Sandbox Code Playgroud)

或者colorBuffer指向一个4 MB大小的内存块,包含1 MB RGBA结构?

Jon*_*eet 8

所述colorBuffer可变值是一个参考到阵列对象.数组对象本身将是一个对象,大小为4MB(4字节*1024*1024).数组是引用类型,但每个元素都是值类型.元素值 RGBA值 - 它不是指针.

数组将自动初始化default(RGBA)为每个元素,您不需要执行自己的初始化.

如果你这样做:

RGBA[] other = colorBuffer;
Run Code Online (Sandbox Code Playgroud)

只是复制一个引用 - 这两个变量现在引用相同的数组.