更新:2007 年 11 月
错误消息
使用了可能未赋值的字段“name”。如果结构未赋值,则结构实例变量在初始化时将不被赋值。在未进行显式初始化的情况下,结构成员将初始化为其默认值。类类型(及其他引用类型)的默认值为 null。如果在没有对类进行初始化的情况下就尝试访问它,则会在运行时引发 NullReferenceException。编译器无法最终确定类成员是否将进行初始化,因此 CS1060 是警告而不是错误。
更正此错误
为 struct 提供一个初始化其所有成员的构造函数。
示例
下面的代码生成 CS1060,因为类类型 U 是 struct S 的成员但从未初始化。
复制代码 | |
---|---|
// cs1060.cs namespace CS1060 { public class U { public int i; } public struct S { public U u; // Add constructor to correct the error. //public S(int val) //{ // u = new U() { i = val }; //} } public class Test { static void Main() { S s; s.u.i = 5; // CS1060 //Try these lines instead, and uncomment the constructor in S // S s = new S(0); // s.u.i = 5; } } } |