Aracılığıyla paylaş


Derleyici Hatası CS9036

Gerekli 'memberName' üyesine bir değer atanmalıdır; iç içe üye veya koleksiyon başlatıcı kullanılarak bir atama yapılamaz.

Bir nesneyi bir required üyeyle başlatırken, üyeye doğrudan bir değer atamanız gerekir. Önce örneklendirilmeden required üyesinin özelliklerini ayarlamak için iç içe bir üye veya koleksiyon başlatıcı kullanamazsınız.

Örnek

Aşağıdaki örnek CS9036 oluşturur:

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

Çözüm

Bu hatayı düzeltmek için gerekli özelliğin yeni bir örneğini doğrudan atayın ve üyelerini başlatın:

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

Gerekli üyeler hakkında daha fazla bilgi için gerekli değiştirici başvuru makalesine ve Nesne ve Koleksiyon Başlatıcıları kılavuzuna bakın.