コンパイラの警告 (レベル 1) CS1060
フィールド 'name' は、割り当てられていない可能性があります。 構造体が代入されていない場合、構造体のインスタンス変数は初期代入なしになります。
構造体メンバーを明示的に初期化しない場合、それらは既定値に初期化されます。 クラス型 (および他の参照型) の既定値は 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;
}
}
}
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示