This question already has answers here:
Why would ref be used for array parameters in C#?
(2个答案)
What is the use of “ref” for reference-type variables in C#?
(10个答案)
4年前关闭。
我对此有点困惑,因为我读过一个int []数组,尽管int是原始类型,因为它是一个数组,所以它是一个引用类型变量。
这样的方法之间有什么区别:
和
修改数组后,对于这两个调用,我都可以在索引0处看到新值100。
掩盖下发生了什么使另一种更好的东西吗? VS IDE是否仅因为“ ref”关键字阐明了意图就允许两者同时使用?
并这样称呼它:
您将看到
(2个答案)
What is the use of “ref” for reference-type variables in C#?
(10个答案)
4年前关闭。
我对此有点困惑,因为我读过一个int []数组,尽管int是原始类型,因为它是一个数组,所以它是一个引用类型变量。
这样的方法之间有什么区别:
public static void ChangeSomething(ref int[] array)
{
array[0] = 100;
}
和
public static void ChangeSomething(int[] array)
{
array[0] = 100;
}
修改数组后,对于这两个调用,我都可以在索引0处看到新值100。
掩盖下发生了什么使另一种更好的东西吗? VS IDE是否仅因为“ ref”关键字阐明了意图就允许两者同时使用?
最佳答案
区别在于您可以直接在方法中分配原始变量。如果将方法更改为此:
public static void ChangeSomething(ref int[] array)
{
array = new int[2];
}
并这样称呼它:
var myArray = new int[10];
ChangeSomething(ref myArray);
Console.WriteLine(array.Length);
您将看到
myArray
在呼叫后只有2个长度。如果没有ref
关键字,则只能更改数组的内容,因为数组的引用已复制到方法中。关于c# - C#传递带有和不带有ref的int [](数组),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32369078/
10-13 08:24