C#基礎(四)——ref與out的區別

1.ref傳進去的參數必須進行初始化,out沒必要
int i;
SomeMethod( ref i );//語法錯誤
SomeMethod( out i );//經過函數

2.ref傳進去的參數在函數內部能夠直接使用,而out不可;
public void SomeMethod(ref int i)
{
int j=i;//經過
//...
}
public void SomeMethod(out int i)
{
int j=i;//語法錯誤spa

}變量

3.ref傳進去的參數在函數內部能夠不被修改,但out必須在離開函數體前進行賦值。
rel能夠把參數的數值傳遞進函數,可是out是要把參數清空,就是說你沒法把一個數
值從out傳遞進去的,out進去後,參數的數值爲空,因此你必須初始化一次。這個就
是兩個的區別,或者說就像有的網友說的,rel是有進有出,out是隻出不進。
4.out適合用在須要retrun多個返回值的地方,而ref則用在須要被調用的方法修改調
用者的引用的時候。
總結:
相同點:二者都是按地址傳遞的,使用後都將改變原來參數的數值。
不一樣點:ref能夠把參數的數值傳遞進函數,可是out是要把參數清空,就是說你沒法把
一個數值從out傳遞進去的,out進去後,參數的數值爲空,因此你必須離開函數體以前初始化一次。語法

ref必須先在函數外部初始化才能完成引用;out是內部爲外部賦值,因此在外部不須要初始化。引用

ref是內部對外部的值進行改變;而out則是內部爲外部變量賦值,能夠返回多個值。方法

相關文章
相關標籤/搜索