標籤:使用 ar 資料 div sp 代碼 on c line
out修飾符
定義作用使用注意總結定義out意為output,所以被out修飾的參數叫做輸出參數.通過使用out修飾的參數,方法可以返回對應參數的值 作用
先看一個例子定義變數: 1 int x=1,y=2,sum;//定義x,y,sum三個整型變數 定義方法:
1 static void Add(int x,int y,out int sum)2 {3 sum=x+y; //x,y相加4 }
調用方法:
1 static void Main(string[] args)2 {3 int x = 1, y = 2;4 int sum;5 Add(x, y,out sum);//調用方法6 Console.WriteLine("sum="+sum);7 Console.ReadKey();8 }
發現sum=3
通過調試我們可以發現,在調用方法Add()的時候,形參並沒有開闢一塊新的地址,而是引用了實參sum的地址,.所以實參sum和形參sum指向的是同一棧空間的值 結論:方法中,被out修飾的形參的值發生了改變,會引起對應實參的值的改變 使用注意(一)在調用方法前,實參可以沒有初始值.但是,調用的方法中必須同樣有out修飾,如果沒有out修飾將會報錯.調用的文法如下:
1 Add(x,y,out sum);//使用者調用方法時必須在參數前用out修飾
使用注意(二)在方法的內部,必須要對out修飾的參數第一次出現的地方賦值,否則會報錯.
1 static void Add(int x,int y,out int sum)2 {3 int temp=sum;//報錯,” 使用了未賦值的 out 參數“sum”4 sum=x+y;5 }即使最後也對sum賦值了,但是由於sum第一次出現沒有賦值,所以也是錯誤的
總結
- 使用out修飾符,可以讓實參隨著方法的操作得到改變.通過它,調用者只使用一次方法調用就能獲得多個傳回值.
- 如果方法定義了輸出參數,就必須在退出方法之前為這個參數賦一個有效值.記住,方法中第一次出現這個參數的時候就應該賦值
- 所以,方法輸出這個參數的時候,這個參數必定有賦值,因此稱之為輸出參數
ref修飾符定義與out輸出參數的區別作用使用注意總結
定義ref意為reference,所以被ref修飾的參數叫做引用參數.通過使用ref修飾的參數,方法可以返回對應參數的值作用作用和out修飾符相同,參數之間傳遞的不是值的本身,而是值所佔用空間的地址
與out輸出參數的區別
- 輸出參數不需要在他們被傳遞給方法之前初始化,因為方法在退出之前必須為輸出參數賦值
- 引用參數必須在他們被傳遞給方法之前初始化,因為是在傳遞一個對已存在的變數的引用,如果不給他初始值,就相當於要對一個未賦值的本地變數進行操作
使用注意(一)在調用方法前,實參必須要有初始值.也就是要分配好空間,有地址!!!但是,調用的方法中必須同樣有ref修飾,如果沒有ref修飾將會報錯.使用注意(二)與out修飾符不同, ref修飾的參數在方法內部不一定需要賦值,即使在方法內部不做任何操作也不會報錯
總結
- 使用ref修飾符.通過它,調用者只使用一次方法調用也能獲得多個傳回值.通常在方法內部進行資料交換,排序等引用操作
- 如果方法定義了引用參數,就必須在調用方法前,實參中分配好地址
- 所以,方法是引用這個參數的地址(由於調用前已經分配好地址),因此稱之為引用參數
out與ref修飾符