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是原始类型,因为它是一个数组,所以它是一个引用类型变量。

这样的方法之间有什么区别:

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