1、使用ref型參數時,傳入的參數必須先被初始化。對out而言,必須在方法中對其完成初始化。
2、使用ref和out時,在方法的參數和執行方法時,都要加Ref或Out關鍵字。以滿足匹配。
3、out適合用在需要retrun多個傳回值的地方,而ref則用在需要被調用的方法修改調用者的引用的時候。
在C#中,方法的參數傳遞有四種類型:傳值(by value),傳址(by reference),輸出參數(by output),數組參數(by array)。
樣本:
代碼
static void Main(string[] args)
{
//outTest
int a, b; //沒賦值
outTest(out a, out b);
Console.WriteLine("Out Test: a={0}, b={1}",a,b); //輸出 a=10,b=20
int c=8,d=9; //賦值
outTest(out c,out d);
Console.WriteLine("Out Test: c={0}, d={1}", c, d);//輸出 c=10,d=20
//RefTest
int o, p;
// refTest(ref o, ref p); 錯誤,Ref 使用前變數必須賦值
o = 1; p = 2;
refTest(ref o,ref p);
Console.WriteLine("Ref Test:o={0},p={1}", o, p); //輸出 o=30,p=40
Console.ReadLine();
}
static void outTest(out int x,out int y)
{
//Console.WriteLine("befor out: x={0},y={1}",x,y); 報錯,使用out後,x,y都被清空,需要重新賦值
x = 10;
y = 20;
}
static void refTest(ref int x,ref int y)
{
Console.WriteLine("befor ref: x={0},y={1}", x, y); //輸出 x=1,y=2
x = 30;
y = 40;
}