ref是傳遞參數的地址,out是返回值,兩者有一定的相同之處,不過也有不同點。
使用ref前必須對變量賦值,out不用。
out的函數會清空變量,即使變量已經賦值也不行,退出函數時所有out引用的變量都要賦值,ref引用的可以修改,也可以不修改。
以下摘錄自 MSDN Library:
以 ref 參數傳遞的引數必須先被初始化,out 則不需要。
out 參數要在離開目前的方法之前至少有一次指派值的動作。
若兩個方法僅有 ref、out 關鍵字的差異,在編譯期會視為相同方法簽章,無法定義為多載方法。
private void Form1_Load(object sender, EventArgs e)
{
string name = "jan";
Console.WriteLine("原 " + name);
Console.WriteLine("改 " + fun1(ref name));
Console.WriteLine("原 " + name);
Console.WriteLine();
Console.WriteLine("改 " + fun2(out name));
Console.WriteLine("原 " + name);
}//
string fun2(out string _st)
{
_st = "";
_st += "pan";
return _st;
}
string fun1(ref string _st)
{
_st += "pan";
return _st;
}
string fun1(string _st)
{
_st += "pan";
return _st;
}
0 意見:
張貼留言