c# - 结构数组 - 数组元素是引用类型还是值类型?

标签 c#

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/

相关文章:

c# - 用于方法或属性的 Visual Studio UML 2010 代码生成

c# - EntityContainer 中未定义 EntitySet 'sproc_Forums_GetForumGroupByID'

c# - 在 C# 中获取列表中的公共(public)元素

c# - 静态方法返回基类实例

c# - Form1 Load Event 仅执行第一条语句

c# - 在 .Net 中使用 Spark 写入增量表

c# - MongoDb C# 驱动程序是否适用于 LINQ 和动态文档?

c# - C++ 将 UTF 字节数组转换为字符串

c# - .NET - 自定义类型可能吗?

c# - 统一配置和相同装配