コンパイラの警告 (レベル 1) CS1060
更新 : 2007 年 11 月
エラー メッセージ
フィールド '名前' は、割り当てられていない可能性があります。構造体が代入されていない場合、構造体のインスタンス変数は初期代入なしになります。
構造体メンバを明示的に初期化しない場合、それらは既定値に初期化されます。クラス型 (および他の参照型) の既定値は null です。初期化されていないクラスにアクセスすると、実行時に NullReferenceException がスローされます。コンパイラは、クラス メンバが初期化されるかどうかを明確に判断できないため、CS1060 はエラーではなく警告です。
このエラーを解決するには
- すべてのメンバを初期化する struct に対してコンストラクタを指定します。
使用例
次のコードでは、クラス型 U は struct S のメンバですが、初期化されないため CS1060 が生成されます。
// 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;
}
}
}