Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Al membro obbligatorio 'memberName' deve essere assegnato un valore; non può usare un membro annidato o un inizializzatore di collezioni.
Quando si inizializza un oggetto con un required
membro, è necessario assegnare direttamente al membro un valore. Non è possibile utilizzare un membro annidato o un inizializzatore di collezione per impostare le proprietà del membro required
senza averne prima creato un'istanza.
Esempio
L'esempio seguente genera l'errore 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" }
};
}
}
Soluzione
Per correggere l'errore, assegnare direttamente una nuova istanza della proprietà richiesta e inizializzare i relativi membri:
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" }
};
}
}
Per altre informazioni sui membri necessari, vedere l'articolo di riferimento del modificatore richiesto e la guida inizializzatori di oggetti e raccolte .