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