必要なメンバー 'memberName' には値を割り当てる必要があります。入れ子になったメンバーまたはコレクション初期化子を使用することはできません。
required
メンバーを使用してオブジェクトを初期化する場合は、メンバーに値を直接割り当てる必要があります。 入れ子になったメンバーまたはコレクション初期化子を使用して、最初にインスタンス化せずに required
メンバーのプロパティを設定することはできません。
例
次の例では CS9036 が生成されます。
class C
{
public string? Prop { get; set; }
}
class Program
{
public required C C { get; set; }
static void Main()
{
var program = new Program()
{
// error CS9036: Required member 'Program.C' must be assigned a value, it cannot use a nested member or collection initializer.
C = { Prop = "a" }
};
}
}
解決策
このエラーを修正するには、必要なプロパティの新しいインスタンスを直接割り当てて、そのメンバーを初期化します。
class C
{
public string? Prop { get; set; }
}
class Program
{
public required C C { get; set; }
static void Main()
{
var program = new Program()
{
// Correct: Assign a new instance of C and then initialize its Prop property
C = new C { Prop = "a" }
};
}
}
必要なメンバーの詳細については、 必要な修飾子 のリファレンス記事と オブジェクトおよびコレクション初期化子 ガイドを参照してください。
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET