Bagikan melalui


Kesalahan Kompilator CS9036

Anggota yang diperlukan 'memberName' harus diberi nilai, tidak dapat menggunakan anggota berlapis atau penginisialisasi koleksi.

Saat menginisialisasi objek dengan required anggota, Anda harus langsung menetapkan nilai kepada anggota. Anda tidak dapat menggunakan anggota berlapis atau penginisialisasi koleksi untuk mengatur properti required anggota tanpa terlebih dahulu membuat instansnya.

Contoh

Sampel berikut menghasilkan 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" }
        };
    }
}

Solusi

Untuk memperbaiki kesalahan ini, secara langsung tetapkan instans baru properti yang diperlukan dan inisialisasi anggotanya:

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" }
        };
    }
}

Untuk informasi selengkapnya tentang anggota yang diperlukan, lihat artikel referensi pengubah yang diperlukan dan panduan Penginisialisasi Objek dan Koleksi .