關鍵字out,關鍵字ref

 

 
class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}
 
class OutExample
{
    static void Method(out int i)
    {
        i = 44;
    }
    static void Main()
    {
        int value;
        Method(out value);
        // value is now 44
    }
}
 
 
 
一看就明白,out和ref都是引用傳值,不同之處就是使用ref傳變量的時候,這個變量必須是經過初始化的
而out就沒有這個限制!  但是out還是有一個限制的,就是在傳遞之前不需要付值,但傳遞給方法之後,該
方法必須要給改變量付值。
 
 
 
下面引用msdn的一句話:
ref 和 out 關鍵字在運行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方法採用 ref 
參數,而另一個方法採用 out 參數,則無法重載這兩個方法。例如,從編譯的角度來看,以下代碼中的兩個
方法是完全相同的,因此將不會編譯以下代碼:
class CS0663_Example 
{
    // compiler error CS0663: "cannot define overloaded 
    // methods that differ only on ref and out"
    public void SampleMethod(out int i) {  }
    public void SampleMethod(ref int i) {  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章