out與ref修飾符

來源:互聯網
上載者:User

標籤:使用   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修飾符

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.