Delen via


Compilerfout CS9036

Vereist lid 'memberName' moet een waarde krijgen toegewezen, het kan geen gebruik maken van een genest lid of een initialisatiefunctie voor verzamelingen.

Wanneer u een object initialiseert met een required lid, moet u het lid rechtstreeks een waarde toewijzen. U kunt geen geneste lid- of verzamelingsinitiator gebruiken om eigenschappen van het required lid in te stellen zonder deze eerst te instantiƫren.

Voorbeeld

In het volgende voorbeeld wordt CS9036 gegenereerd:

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

Oplossing

U kunt deze fout oplossen door rechtstreeks een nieuw exemplaar van de vereiste eigenschap toe te wijzen en de leden ervan te initialiseren:

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

Zie het referentieartikel over vereiste modifiers en de handleiding voor object- en collectie-initializers voor meer informatie over vereiste leden.