我們知道乙個方法只能返回乙個數值,如果需要返回多個數值,很多語言提供的辦法是傳引用來直接改變引用所指向資料的值,c#提供的ref關鍵字就是這個功能,同時c#又提供了另外乙個關鍵字out也能實現這個功能,並且值得一提的是,有out/ref關鍵字修飾的變數,在呼叫的時候都是傳引用。
ref修飾的變數,要求在使用前被事先賦值,而out修飾的變數,則沒有這個要求,而且即便賦值了,在函式定義的時候也會當做沒賦值,同時被out修飾的所有變數,在其定義的函式裡面都需要被賦值,否則報錯,如:
class test1
儘管 ref 和 out 關鍵字會導致不同的執行時行為,但在編譯時並不會將它們視為方法簽名的一部分。
因此,如果兩個方法唯一的區別是:乙個接受 ref引數,另乙個接受 out 引數,則無法過載這兩個方法。
例如,不會編譯下面的**:
public void samplemethod(ref int i)
} 還有一些要注意的東西,就先不一一列出來,滑鼠放在out上面按f1裡面很詳細。
學習筆記 C 中Ref和Out關鍵字的區別
使用ref型引數時,傳入的引數必須先被初始化。而out則不需要,對out而言,就必須在方法中對其完成初始化。其次 ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把乙個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有...
C 方法引數傳遞 同時使用ref和out關鍵字
在方法引數傳遞中,可以同時使用ref和out關鍵字,但是要注意ref和out引數傳遞的不同。using system class program 調整後的分數為,加平時表現分後 score,refscore,outscore console.readkey private void changesc...
關於C 中的ref和out關鍵字
c 中的傳值呼叫和傳引用調動。傳值呼叫是指在使用引數時,是把乙個值傳遞給函式使用的乙個變數。對函式中此變數的任何修改都不影響函式呼叫中指定的引數。using system using system.collections.generic using system.linq using system....