*******ref 有進有出,out只出不進*************************************************************
Ref指明了方法中使用的是引用型參數,引用型參數不開辟新的內存區域。當利用引用型參數向方法傳遞形參時,編譯程序將把實際值在內存中的地址傳遞該方法。引用型參數通常已經初始化。
如
int i=1,j=2; //初始化在函數外面 Swap(
ref i,
ref j);
Out輸出型參數也不開辟新的內存區域,但與引用型參數不同的是,調用方法之前無需對變量進行初始化,輸出型參數主要用于傳遞方法返回的數據。
string name,path; //沒有初始化,初始化在函數里面 File(out name,out path);
學過C/C++的人,對C#的關鍵字Ref和Out應該都很好理解。它們都提供了一種可以在被調用函數內修改傳遞的參數的值的方法。因為這一功能很類似C/C++的指針。對于沒學過C/C++的,也應該可以明白這兩個參數的作用。
雖然Ref和Out都提供了修改參數值的方法,但它們還是有一點點小的區別。
1、Ref在作為參數調用函數之前,變量一定要賦值,否則會得到一個常規編譯錯誤:使用了未賦值的變量。
2、在被調用函數內,以Ref引入的參數在返回前不必為它賦值。
3、Out在作為參數調用函數之前,變量可以不被賦值。
4、在被調用函數內,以Out引入的參數在返回前一定要至少賦值一次。其實本質上講,Ref更適合理解為給被調用函數傳遞了一個與原參考同地址的變量。而Out則可以理解為在調用函數前,先給變量找個地方,讓被調用函數在給定地點放一個值。
posted on 2008-09-10 10:01
天書 閱讀(609)
評論(0) 編輯 收藏 引用