假设有如下代码:
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,都是无效的。
阅读:23