c# 方法的參數傳遞有四種類型:傳值(by value),傳址(by reference),輸出參數(by output ),數組參數(by array)。 c#
注:傳值參數無須額外的修飾符,傳址參數須要修飾符ref,輸出參數須要修飾符out,數組參數須要修飾符params。且在方法聲明中的 params 關鍵字以後不容許任何其餘參數,而且在方法聲明中只容許一個 params 關鍵字。ref 關鍵字使參數按引用傳遞(則會修改所引用變量的值)。其效果是,當控制權傳遞迴調用方法時,在方法中對參數所作的任何更改都將反映在該變量中。 數組
若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。spa
傳遞到 ref 參數的參數必須最早初始化。這與 out 不一樣,out 的參數在傳遞以前不須要顯式初始化,但須要調用方法以便在方法返回以前賦值。編譯
屬性不是變量,所以不能做爲 ref 參數傳遞。變量
儘管 ref 和 out 在運行時的處理方式不一樣,但它們在編譯時的處理方式是相同的。所以,若是一個方法採用 ref 參數,而另外一個方法採用 out 參數,則沒法重載這兩個方法。例如,從編譯的角度來看,如下代碼中的兩個方法是徹底相同的。若是嘗試這麼作,將致使不能編譯該代碼。引用
若是一個方法採用 ref 或 out 參數,而另外一個方法不採用這兩類參數,則能夠進行重載。方法
注: 數據
out適合用在須要retrun多個返回值的地方,而ref則用在須要被調用的方法修改調用者的引用的時候。 co
ref、out與params,ref是引用方法內的參數影響結果;out是引用方法中參數返回結果到主方法;而params是將可變同類參數(即數組)傳入參數。使用中ref用於須要調用引用方法內的數據的。out用於利用引用方法對主方法進行操做,而prarams用於參數長度未知的狀況。 回調