可能重复:
数组或列表是否在 C# 中默认通过引用传递?
在我的机器上,指针是 32 位的,因此传递类对象的函数将传递 32 位(指向类对象的指针)。我不断听到关于 c 语言中数组的矛盾之处,即它们是引用类型,并且它们是按值传递的。那么有人可以告诉我传递5个浮点数组的函数在传递该数组时将使用多少位?它是指针的大小,还是 5 * 32 的大小为 5 个浮点数?
可能重复:
数组或列表是否在 C# 中默认通过引用传递?
在我的机器上,指针是 32 位的,因此传递类对象的函数将传递 32 位(指向类对象的指针)。我不断听到关于 c 语言中数组的矛盾之处,即它们是引用类型,并且它们是按值传递的。那么有人可以告诉我传递5个浮点数组的函数在传递该数组时将使用多少位?它是指针的大小,还是 5 * 32 的大小为 5 个浮点数?
所有数组都是引用类型:
引用MSDN:
数组类型是从抽象基类型 Array 派生的引用类型。由于此类型实现了 IEnumerable 和 IEnumerable,因此您可以在 C# 中的所有数组上使用 foreach 迭代。
因此,将数组传递给函数会传递一个引用,无论数组中有多少元素,它的大小都是相同的。在您的示例中,这将是 32 位。
数组是引用类型,每个引用是 4 字节(在 32 位系统上)或 8 字节(在 64 位系统上)大。作为参考,对于大小,只需将其长度乘以参考大小并添加类定义开销(变量少字节,内存管理少字节)。