C 中out和ref之間的區別

2022-06-21 09:00:11 字數 1472 閱讀 8941

**   

其次:ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把乙個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的網友說的,ref是有進有出,out是只出不進。

ref(c# 參考)

ref 關鍵字使引數按引用傳遞。其效果是,當控制權傳遞**用方法時,在方法中對引數的任何更改都將反映在該變數中。若要使用 ref 引數,則方法定義和呼叫方法都必須顯式使用 ref 關鍵字。

例如:

class refexample

static void main()

}

傳遞到 ref 引數的引數必須最先初始化。這與 out 不同,後者的引數在傳遞之前不需要顯式初始化。

儘管 ref 和 out 在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果乙個方法採用 ref 引數,而另乙個方法採用 out 引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的,因此將不會編譯以下**:

class cs0663_example

public void samplemethod(out int i)

}

但是,如果乙個方法採用 ref 或 out 引數,而另乙個方法不採用這兩個引數,則可以進行過載,如下例所示:

class refoutoverloadexample

public void samplemethod(ref int i)

}

out(c# 參考)

out 關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似,不同之處在於 ref 要求變數必須在傳遞之前進行初始化。若要使用 out 引數,方法定義和呼叫方法都必須顯式使用 out 關鍵字。

例如:

class outexample

static void main()

}

儘管作為 out 引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。

ref 和 out 關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果乙個方法採用 ref 引數,而另乙個方法採用 out 引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的,因此將不會編譯以下**:

class cs0663_example

public void samplemethod(ref int i)

}

但是,如果乙個方法採用 ref 或 out 引數,而另乙個方法不採用這兩類引數,則可以進行過載,如下所示:

class refoutoverloadexample

public void samplemethod(out int i)

}

**********= end

C 中out和ref之間的區別

於 其次 ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把乙個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的說的,ref是有進有出,out是只出不進。1 2345 6789 1011 1213 14classr...

C 中out和ref之間的區別

出處 首先 兩者都是按位址傳遞的,使用後都將改變原來引數的數值。其次 ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把乙個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的說的,ref是有進有出,out是只出不進。...

C 中out和ref之間的區別

之前學習c 時候就遇到了這個問題,不過當時沒有深究。昨晚想到這個問題時候自己嘗試敲了敲 結果從執行的結果來看,越看越亂。在檢視了一些資料的基礎上,自己總結了一下。可能會有點亂,但是自己總結出來的東西。一 ref 關鍵字使引數按引用傳遞。其效果是,當控制權傳遞 用方法時,在方法中對引數所做的任何更改都...