CS 中的 out 和 ref

78 阅读1分钟

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)
	{

	}