C# ref和out的区别是什么?

C# ref和out的区别是什么?,c#,C#,当我尝试用ref关键字替换out关键字时,下面的代码中没有错误。当我尝试用out代替ref时,出现了一个错误,如NASIGNED out参数 这个错误意味着什么 static void Main() { string test = "34"; addOneToRefParam(out test); Console.WriteLine("test is : " + test); } public static void

当我尝试用ref关键字替换out关键字时,下面的代码中没有错误。当我尝试用out代替ref时,出现了一个错误,如NASIGNED out参数 这个错误意味着什么

   static void Main()
    {
        string test = "34";
        addOneToRefParam(out test);
        Console.WriteLine("test is : " + test);
    }

    public static void addOneToRefParam(out string i)
    {
        int  k =Convert.ToInt32(i) + 1;
        i = Convert.ToString(k);
        Console.WriteLine("i is : " + i);
    }
在传递给函数之前必须初始化ref参数,函数可能会更改参数,也可能不会更改参数。因此,在传递之前需要对其进行初始化,就像对非ref参数进行初始化一样:

int i; 
Foo(i); // error unassigned variable
Foo(ref i) // same error

例如,您的函数保证将参数设置为一个值。因此它不需要初始化。

我希望有一个SearchEngine可以找到类似问题的答案。我打赌URL看起来会像这个@derape,这也是一个令人印象深刻的UI模型;荣誉有人应该这样做。次要的是:就CLI而言:绝对没有。ref和out之间完全没有区别,只是其中一个恰好有一个它不感兴趣的属性。这里的所有差异都完全在编译器级别。另外:您既不需要ref,因为您不需要修改它,也不需要out,因为您需要它作为输入参数。你只要一根绳子。