黑馬程式設計師 C 中的 REF與OUT傳參方法

2021-06-06 05:30:54 字數 1222 閱讀 2738

----------------------

windows phone 7手機開發、

.net培訓、期待與您交流! ---------------------- 

最近在學習中看見方法定義傳參是有ref和out兩種以前沒用過,初次看見覺得奇怪,還在想什麼時候c#有ref和out引數型別。不過看了些資料了解了這兩種引數傳遞的方式和區別。

我們都知道,定義乙個變數就是在記憶體中開闢了乙個空間,然後在這個空間裡面存放值。好了,我們來看點例子了解下:

main()

,num2=",num1,num2);

swap2(ref num1,ref num2);

console.writeline("num1=,num2=", num1, num2);

console.readkey();

}而這裡我定義了兩個方法分別是ref傳遞的 swap2方法和普通的swap方法,兩個都是對兩個傳進引數的互換值的操作。**如下:

static void swap(int i1, int i2)

static void swap2(ref int i1, ref int i2)

如果我們啟動除錯功能會發現當呼叫swap方法時候,num1和num2兩個引數並沒有像我們預期的互換數值,而swap2方法卻實現了互換操作。通過這個例子我們可以看出ref傳參方式,就是把變數宣告的時候指向的記憶體空間中的值進行操作,而普通的傳參則是傳遞的是呼叫方法時候傳遞進去引數的副本,所以在呼叫swap2方法之後,num1和num2的值分別都改變了,而且ref傳參有個特點就是必須是傳進的引數必須賦初值,而out傳參方式卻沒沒有這方面的要求,下面看個out的例子:

main()

else

console.readkey();

}上面這個例子是對日期進行操作的例子,我們可以看到set引數通過讀取使用者輸入的資料進行分析是否是日期格式,使用者可以輸入為空,或者更本不是日期而是一些字串格式的資料。並且通過這個例子我們可以看到返回了datetime.tryparse兩個引數,首先是進行datetime的引數型別的轉換是否成功,其後再返回乙個datetime的引數給變數set,所以set在宣告時候賦值與否,都不會影響最後的set的值,因為當進行datetime.tryparse轉換時候,就會重新為set進行賦值。

----------------------

windows phone 7手機開發、

.net培訓、期待與您交流! ----------------------

黑馬程式設計師 out 與 ref

out 與 ref out 與 ref的作用都是用於傳遞引數,out 主要用於傳出值,ref 即可傳入值也可傳出值,使用out修飾的引數在使用前必須對其進行賦值.方法引數上的 ref 方法引數關鍵字使方法引用傳遞到方法的同乙個變數。當控制傳遞 用方法時,在方法中對引數所做的任何更改都將反映在該變數中...

黑馬程式設計師 out和ref

namespace 39.out ref result number,result console.readkey static int test out int a 由out修飾的引數是往外傳出值的,方法的引數中有out,那麼呼叫此方法時,也需要在引數前面加out。namespace 39.1練習...

黑馬程式設計師 方法過載 ref和out修飾的引數

windows phone 7手機開發 net培訓 期待與您交流!方法過載 一般在同乙個類中,方法名相同,並且方法的引數個數不同或者對應位置上的型別不同,才能構成方法的過載。注意 方法過載和返回值沒有關係。方法如何返回多個值?方法的out引數和ref引數 如上 實現步驟 1 在方法的引數型別前加ou...