C 菜鳥筆記(二)ref和out關鍵字的相同與差異

2021-08-17 06:52:46 字數 529 閱讀 3750

我們知道乙個方法只能返回乙個數值,如果需要返回多個數值,很多語言提供的辦法是傳引用來直接改變引用所指向資料的值,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....