out 和 ref 改变参数的传递方式,在采用 out 或 ref 的情况下,向一个方法中传递值类型的参数,在方法每部对参数做改变不会影响方法外部传递进方法的参数的值。在采用 out 或 ref 的情况下,向一个方法中传递值类型的参数,值类型的参数会被转化成引用类型的参数。
以下面的方式使用 ref 是错误的,因为参数没有被初始化。
public static void Main()
{
Film film;
int index;
MethodRef1(ref index);
MethodRef2(ref film);
}
但是,以下面的方式使用 out 是正确的,因为 out 不要求参数初始化。
public static void Main()
{
Film film;
int index;
MethodOut2(out film);
MethodOut1(out index);
}
out 和 ref 之间的差别在于:
- out 要求必须在方法内部为传入的参数 out 重新赋值。
- ref 要求传递给方法的参数必须是已经初始化过的。
public static void MethodOut1(out int index)
{
index = 0;
}
public static void MethodOut2(out Film film)
{
film = new Film();
film.FilmGuid = DateTime.Now.ToString();
film.FilmName = "复仇三部曲";
}
public static void MethodRef1(ref int index)
{
}
public static void MethodRef2(ref Film film)
{
}