【发布时间】:2014-12-03 04:54:53
【问题描述】:
我对 C# 函数或方法在某些对象用作输入参数时处理内存的方式有疑问。我已经尝试搜索此问题的答案,但找不到任何东西,但我可能不知道要寻找什么。
问题:假设我有一个非常大的整数数组,大小为 10.000 x 10.000,称为“MyArray”。假设我还有一些名为“MyMethod”的方法,它从 MyArray 的两个指定行(这是输入)中获取多个条目,并对其执行一些操作,例如添加或乘以这些数字,然后返回另一个整数。
为了让我的代码尽可能短,我更喜欢创建一个方法
MyMethod(int i, int j, int[][] MyArray)
而不必输入数组中的所有数字作为单独的参数。然而,这是否意味着该方法在调用时会创建 MyArray 的副本,或者 C# 是否知道如果仅读取此数据而不以任何方式编辑此数据,则不需要制作副本?
【问题讨论】:
-
数组通过引用传递
-
@Matthew 不,数组不是通过引用传递的。数组类型是引用,这些引用是按值传递的。在 C# 中,所有类型都按值传递,除非使用了
ref或out关键字。 -
@Servy 你在技术上是正确的,最好的一种正确。
标签: c# function memory methods