out参数修饰符
//参考资料在QQ群:683782676
class Program
{
static void Main(string[] args)
{
//out通过引用来传递
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)
{
//out参数是必须带上默认值的 但是需要在方法里面对当前的变量进行赋值
tmps="在这里面赋值了";
}
}
ref参数修饰符
class Program
{
static void Main(string[] args)
{
//ref参数通过引用传递的参数,而不是值
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="传值之后";
}
}
用途:
在C#中通过使用方法来获取返回值时,通常只能得到一个返回值。因此,当一个方法需要返回多个值的时候,就需要用到ref和out。
概述:
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
同:
1、都能返回多个返回值。
2、若要使用 ref 和out参数,则方法定义和调用方法都必须显式使用 ref和out 关键字。在方法中对参数的设置和改变将会直接影响函数调用之处(参数的初始值)。
异:
1、ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化;
//参考资料在QQ群:683782676
2、out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。