可能重复:
Are arrays or lists passed by default by reference in c#?
在我的机器上,指针是32位,因此传递类对象的函数将传递32位(作为类对象的引用的指针)。我一直听到关于c sharp的数组的相互矛盾的事情,它们是引用类型,并且它们是通过值传递的。那么有人可以告诉我传递5个浮点数组的函数在传递该数组时会使用多少位?它是指针的大小,还是5 * 32大小的5 * 32?
答案 0 :(得分:2)
数组是引用类型,因此它只传递引用,而不是所有值。
Passing Arrays as Arguments (C# Programming Guide)
数组可以作为方法参数的参数传递。因为数组 是引用类型,该方法可以改变元素的值
您可能会看到Jon Skeet的这篇文章:Parameter passing in C#
答案 1 :(得分:1)
所有数组都是引用类型:
引用MSDN:
数组类型是从抽象基类型派生的引用类型 阵列。由于这种类型实现了IEnumerable和IEnumerable,你 可以在C#中的所有数组上使用foreach迭代。
因此,将数组传递给函数会传递一个引用,无论数组中有多少元素,它都将具有相同的大小。在你的例子中,这将是32位。
答案 2 :(得分:1)
数组是引用类型,每个引用是4个字节(在32位系统上)或8个字节(在64位系统上)大。这是为了参考,对于大小只是将其长度与参考大小相乘并添加类定义开销(变量几个字节,内存管理很少)。