2014-09-02 113 views
-2

虽然我试图与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); 
    } 
+9

我希望有一个搜索引擎可以找到这样的问题的答案。我敢打赌,这个网址看起来像这个https://www.google.com/search?q=csharp+ref+out – derape 2014-09-02 08:43:01

+3

@derape,这也是一个令人印象深刻的UI模型;荣誉。有人应该这样做。 – 2014-09-02 08:43:35

+0

未成年人:就CLI而言:“绝对没有”。 'ref'和'out'之间恰好是零的区别,只是一个碰巧有一个它不感兴趣的属性。这里的所有区别在编译器级别都是*完全*。 – 2014-09-02 08:45:21

回答

2

ref参数必须传递给函数之前进行初始化,参数可能会或可能不会被function.So改变,你需要初始化你传递之前,像你非裁判参数做:

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

out,你的功能保证其在设定的参数为value.So它不需要被初始化。