out 和 ref 混合使用时可能引发的 bug

23 阅读1分钟

起初,方法是这样的。没有问题,能正常跑起来。

	public static void Main()
	{
		Film film;
                MethodOut(out film);
                MethodRef(ref film);
	}

后来,方法还是这样。但是无法正程序无法正常运行。 原因,MethodRef 依赖于 MethodOut。传递给 MethodRef 方法的参数 film,必须非空。MethodOut 先于 MethodRef 运行,在 MethodOut 内部为 film 赋值,而且是非空值。之后 MethodOut 方法被多次修改,终于在某次出现了 在 MethodOut 内部给 film 赋了一个空值。在编译阶段该问题无法察觉,在运行阶段该问题却暴漏了。