数组或列表默认是通过c#中的引用传递的吗?

数组或列表默认是通过c#中的引用传递的吗?

他们呢?或者我应该通过引用传递它来加快我的程序?



千巷猫影
浏览 563回答 3
3回答

繁花如伊

该参考被传递通过值。.NET中的数组是堆上的对象,因此您有一个引用。该引用按值传递,这意味着调用者将看到对数组内容的更改,但重新分配数组将不会:void Foo(int[] data) {    data[0] = 1; // caller sees this}void Bar(int[] data) {    data = new int[20]; // but not this}如果添加ref修饰符,则引用将通过引用传递- 并且调用者将看到上面的更改。

墨色风雨

是的,它们默认在C#中通过引用传递。除了值类型之外,C#中的所有对象都是。为了更精确一点,它们通过“按价值参照”传递; 也就是说,您在方法中看到的变量的值是对传递的原始对象的引用。这是一个小的语义点,但有时可能很重要。
打开App,查看更多内容
随时随地看视频慕课网APP