引用類型參數

GPS平臺、網站建設、軟件開發、系統運維,找森大網絡科技!
http://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=534php

ref 和 out 在運行時的處理方式不一樣
ref 關鍵字使參數按引用傳遞。其效果是,當控制權傳遞迴調用方法時,在方法中對參數所作的任何更改都將反映在該變量中。若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。例如:
  class RefExample
  {
   static void Method(ref int i)
   {
   i = 44;
   }
   static void Main()
   {
   int val = 0;
   Method(ref val);
   // val is now 44
   }
  }
傳遞到 ref 參數的參數必須最早初始化。這與 out 不一樣,out 的參數在傳遞以前不須要顯式初始化。(請參見 out。)
儘管 ref 和 out 在運行時的處理方式不一樣,但它們在編譯時的處理方式是相同的。所以,若是一個方法採用 ref 參數,而另外一個方法採用 out 參數,則沒法重載這兩個方法。例如,從編譯的角度來看,如下代碼中的兩個方法是徹底相同的,所以將不會編譯如下代碼:
class CS0663_Example
{
// compiler error CS0663: "cannot define overloaded
// methods that differ only on ref and out"
public void SampleMethod(ref int i) { }
public void SampleMethod(out int i) { }
}
可是,若是一個方法採用 ref 或 out 參數,而另外一個方法不採用這兩類參數,則能夠進行重載,以下所示:
class RefOutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(ref int i) { }
}網絡

  示例:按引用傳遞值類型(如上所示)是有用的,可是 ref 對於傳遞引用類型也是頗有用的。這容許被調用的方法修改該引用所引用的對象,由於引用自己是按引用來傳遞的。下面的示例顯示出當引用類型做爲 ref 參數傳遞時,能夠更改對象自己。
  class RefRefExample
  {
   static void Method(ref string s)
   {
   s = "changed";
   }
   static void Main()
   {
   string str = "original";
   Method(ref str);
   // str is now "changed"
   }
  }運維

GPS平臺、網站建設、軟件開發、系統運維,找森大網絡科技!
http://cnsendnet.taobao.com
來自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=534ide

相關文章
相關標籤/搜索