ref和out有什么区别?

时间:2014-09-02 08:39:36

标签: c#

当我尝试使用ref关键字替换关键字时,下面的代码中没有错误。虽然我尝试使用而不是ref,但是会发生错误,例如" 未分配的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);
    }

1 个答案:

答案 0 :(得分:2)

ref参数必须在传递给函数之前初始化,函数可能会也可能不会更改参数。因此,您需要在传递之前对其进行初始化,就像使用 non-ref < / em>参数:

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

对于out,您的函数保证它将参数设置为值。因此不需要初始化。