コンパイラの警告 (レベル 1) CS1060

フィールド 'name' は、割り当てられていない可能性があります。 構造体が代入されていない場合、構造体のインスタンス変数は初期代入なしになります。

構造体メンバーを明示的に初期化しない場合、それらは既定値に初期化されます。 クラス型 (および他の参照型) の既定値は null です。 初期化されていないクラスにアクセスすると、実行時に NullReferenceException がスローされます。 コンパイラは、クラス メンバーが初期化されるかどうかを明確に判断できないため、CS1060 はエラーではなく警告です。

このエラーを解決するには

  1. すべてのメンバーを初期化するコンストラクターを struct に対して指定します。

次のコードでは、クラス型 Ustruct 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;  
  
        }  
    }
}  

関連項目