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