最近看到
params
這個關鍵字,那就寫寫
ref、
out、
params
吧。三者都是方法引數的修飾符。使用
ref和
out時,方法裡面對引數的會處理影響到方法外面的值,二者都相當於引用傳遞。但使用
ref和
out是有區別的,
用具體的例子解釋如下:
控制台輸入如下兩個函式:
void
useout(out
int n)
void useref(ref
int n)
這時會對
useout
函式報兩個錯誤:
從這可以看出來兩個結論:
out修飾的引數(上例中指的是
n)在使用前(方法體內)必須賦值;在方法呼叫返回之前必須對
out修飾的引數賦值。
上面兩個結論也正好對應
ref,
ref修飾的引數不需要這樣,這是二者的不同之處。
上面的結論同時也引出來了
ref和
out得另外乙個區別,是什麼呢?
就是,out修飾的引數在方法體內使用之前的值與在方法體外對該傳遞過來的引數賦的值無關,即
out修飾的引數在傳遞之前不需要賦值,但
ref修飾的引數傳遞前一定要賦值。看下面乙個例子:
class
program
private
static
void useref(ref
int n)
static
void main(string args)
} 輸出結果:
其實上面同時也說明了另外乙個問題:
ref和
out
都可以以引用傳遞的方式改變函式外部的值,這是二者的共同點。
雖然二者修飾符不一樣,執行時的處理方式不同,但是編譯時的方式是一樣的,所有如果乙個方法採用
ref引數,另一方方法採用
out引數,則無法過載這兩個函式。
下面是params:
params
關鍵字在方法成員的引數列表中使用,為該方法提供了引數個數可變的能力。
例子:class
program
console.writeline(p); }
else }
static
void main(string args)
} 結果:
C ,,引數修飾符
函式內給引數賦值,不改變實際引數的值。即修改只在函式中,函式執行完就失去生命週期了。private void form1 load object sender,eventargs e public void mes string str 首先顯示函式內的列印資訊 可以看見str的資訊改變 函式內 隨...
C 方法引數修飾符
一般我們在定義乙個帶引數的方法時只會註明該引數的型別,但在一些特殊的應用中我們需要用關鍵字對引數進一步說明,這被稱之為引數修飾符,c 3.0提供的引數修飾符大致有out ref和params。當我們需要乙個方法返回多個值時就可以通過下面的例子實現 這裡呼叫方法中無需對要獲得返回值的變數進行賦初值。下...
c 引數修飾符 out
out關鍵字通過引用傳遞引數。方法定義和呼叫方法必須顯式使用out關鍵字 呼叫方法時引數不必初始化,方法內必須對其賦值 引數中可以宣告多個out修飾的引數。例 public void useout out intnum public void index 將上述 改為 public void use...