ref和out的使用及區別
1. ref的使用:使用ref進行參數的傳遞時,該參數在創建時,必須設置其初始值,且ref側重於修改;
2. out的使用: 采用out參數傳遞時,該參數在創建時,可以不設置初始值,但是在方法中必須初始化,out側重於輸出;
注釋:當希望方法返回多個值時,可以用out,並且一個方法中的參數可以有一個或多個out參數;使用 out 參數,必須將參數作為 out 參數顯式傳遞到方法中,但是out 參數的值不會被傳遞到 方法中,且屬性不是變量,不能作為 out 參數傳遞。
ref是有進有出,而out是只出不進。
舉例如下:
out的使用
class Program
{
static void Main(string[] args)
{
string tmp; //先聲明,但不初始化
User _user=new User();
_user.Name(out tmp); //調用Name方法
Console.WriteLine("{0}",tmp); //這時tmp的值為“在這里面賦值了”
Console.ReadKey(true);
}
}
class User{
public void Name(out string tmps)
{
tmps="在這里面賦值了";
}
}
使用out結果輸出: 在這里面賦值了
ref的使用
class Program
{
static void Main(string[] args)
{
string tmp="傳值之前"; //聲明並初始化 這時如果輸出tmp值為"傳值之前"
User _user=new User();
_user.Name(ref tmp);
Console.WriteLine("{0}",tmp);
Console.ReadKey(true);
}
}
class User {
public void Name(ref string tmps)
{
tmps="傳值之后";
}
}
使用ref方法結果輸出:傳值之后