C sharp out關鍵字

https://yutuo.net/archives/5e98cb8b74d6363b.htmlhtml

在C#中,我常常用到refout這兩個關鍵字,但對其區別也還不是很清楚。函數

基本上來講,C#函數參數的傳遞方法爲分兩種,一種轉值,另外一種是傳址。對於不加任何修飾的函數參數來講,它都是傳值的。傳值又分爲兩種,一種是傳對象值,另外一種是傳地址值。對於值類型System.ValueType(包括這兩種structenum,C#中的intdouble等基本類型都是struct)來講是傳對象值,對於其它對象來講是傳地址值。.net

在加了修飾refout以後,函數參數就是傳址的。雖然二者都是傳址參數,但二者仍是有區別的,用最簡單的一句說來講:ref是能進能出,out是能出不能用。就是說ref是能夠把值傳入函數裏,而且能夠輸出函數外,因此它主要用於函數內部須要對外部值進行修改的時候;out不能把值傳入函數,只能作爲輸出,它主要用於函數須要返回多個值的時候。code

要注意的有如下兩點:htm

  1. 使用ref型參數時,在調用函數前必須初始化(設置過值);使用out型參數時,必須在函數內對其初始化(設值)。
  2. 使用refout時,函數的定義和調用函數時,參數前都要加refout關鍵字。
相關文章
相關標籤/搜索