这两个关键字还是很常用的,尤其是out可以用于返回多个参数。
ref:
1.ref
关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中,联想一下浅拷贝。
2.若要使用
ref
参数,则方法定义和调用方法都必须显式使用
ref
关键字,
传递到
ref
参数的参数必须最先初始化。
=》简单演示:
class Program
{
static void Main(string[] args)
{
List<int> list = new List<int>() { 1, 2, 3 };
Console.Write("调用方法之前:");
foreach (var item in list)
{
Console.Write(item+",");
}
AddList(ref list);
Console.WriteLine();
Console.Write("调用方法之后:");
foreach (var item in list)
{
Console.Write(item+",");
}
Console.ReadKey();
}
//改变list的值,但是方法没有任何返回值
static void AddList(ref List<int> list)
{
list.Add(4);
}
}
out:
1.out参数在传递之前没有必要初始化,在方法中必须赋值。
2.out的主要作用:当方法有多个返回值时,可以通过out参数来获取方法的返回值。
=》简单演示:
class Program
{
static void Main(string[] args)
{
DateTime date;//无需初始化
string dateString = "2018-01-26";
bool res = TryParse(dateString, out date);
Console.WriteLine(res);
Console.WriteLine(date);
Console.ReadKey();
}
//时间字符串转DateTime对象
static bool TryParse(string dateString, out DateTime date)
{
date = new DateTime();
try
{
date = DateTime.Parse(dateString);
return true;
}
catch
{
return false;
}
}
}