假设有如下代码:
using System; class A { public int i = 1; public int j = 2; }
public class Program { public static void Main() { A a = new A {i = 0, j = 0}; Console.WriteLine("a.i = {0}, a.j = {1}", a.i, a.j); } }
在Visual Studio或者Mono Developer中运行,输出为:
a.i = 0, a.j = 0
但同样的代码,在Unity中运行,会输出:
a.i = 1, a.j = 2
经研究, 发现这是一个Unity的Bug:使用成员变量所属类型的默认值初始化成员变量,会被Unity的编译器优化掉(可查看IL代码确认这一点)。比如初始化int类型为0,bool类型为true,引用类型为null,都是无效的。
阅读:19