2009-02-22 8 views
11

Perché struct non può avere il costruttore senza parametri? Qual è il problema nel fare ciò per CLR o perché non è permesso? Per favore, spiegalo perché non lo capisco.Perché struct non può avere il costruttore senza parametri

+0

Un duplicato è http://stackoverflow.com/questions/333829, "Perché non è possibile definire un costruttore predefinito per una struttura in .NET" –

+0

Duplicato: [Perché non è possibile definire un costruttore predefinito per una struttura in .NET] (http://stackoverflow.com/questions/333829/why-cant-i-define-a-default-constructor-for-a-struct-in-net) –

risposta

14

Non posso avere un costruttore esplicito senza parametri, solo l'implicito, che inizializza tutti i membri al loro valore predefinito.

Anche se il CLR permette, C# fa non consentire le strutture di avere un costruttore senza parametri di default . Il motivo è che, per un tipo di valore, i compilatori per impostazione predefinita non generano un costruttore predefinito né generano una chiamata al costruttore predefinito. Quindi, anche se ti è capitato di definire un costruttore predefinito , non sarà chiamato e questo ti confonderà. Per evitare tali problemi, il compilatore C# non consente la definizione di un costruttore predefinito dall'utente. E perché non genera un costruttore di default , non è possibile inizializzare campi quando si definiscono loro, ...

0

Piuttosto una spiegazione ragionevole è disponibile all'indirizzo: http://en.csharp-online.net/CSharp_FAQ:_Why_must_struct_constructors_have_at_least_one_argument

Citando: "Il Common Language Runtime (CLR) di .NET non garantisce che vengano chiamati costruttori senza parametri: se le strutture fossero autorizzate ad avere costruttori di default senza parametri, l'implicazione sarebbe che i costruttori predefiniti sarebbero sempre chiamati. nessuna garanzia del genere. "

Problemi correlati