参数是数组时参数的大小是多少?

时间:2012-09-19 04:10:34

标签: c#

  

可能重复:
  Are arrays or lists passed by default by reference in c#?

在我的机器上,指针是32位,因此传递类对象的函数将传递32位(作为类对象的引用的指针)。我一直听到关于c sharp的数组的相互矛盾的事情,它们是引用类型,并且它们是通过值传递的。那么有人可以告诉我传递5个浮点数组的函数在传递该数组时会使用多少位?它是指针的大小,还是5 * 32大小的5 * 32?

3 个答案:

答案 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位系统上)大。这是为了参考,对于大小只是将其长度与参考大小相乘并添加类定义开销(变量几个字节,内存管理很少)。