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
risposta
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, ...
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. "
- 1. nascondere senza parametri costruttore sul struct
- 2. Il servizio Web non può essere serializzato perché non ha un costruttore senza parametri
- 3. "System.Web.HttpContext non può essere serializzato perché non ha un costruttore senza parametri."
- 4. Una classe può avere un costruttore con modello senza argomenti?
- 5. La classe base non contiene il costruttore senza parametri?
- 6. Selezione costruttore senza parametri Autofac
- 7. L'overload dell'operatore sovraccarico può avere parametri predefiniti?
- 8. Activator.CreateInstance (...) non trova il costruttore con parametri
- 9. Se una struct non può ereditare un'altra classe o struct, perché Int32 ha un metodo ToString()?
- 10. Perché non posso applicare le classi derivate per avere costruttori senza parametri?
- 11. non può definire il costruttore come protetto o privato! perché?
- 12. È accettabile avere parametri nel costruttore di classi?
- 13. Come verificare un tipo per il costruttore senza parametri?
- 14. Il costruttore non può essere trovato
- 15. C# serializza una classe senza un costruttore senza parametri
- 16. Impossibile istanziare il proxy ... Impossibile trovare un costruttore senza parametri
- 17. Perché una Struct non può essere derivata da un'altra struttura?
- 18. Perché copiare il costruttore non viene richiamato?
- 19. In .NET una classe può avere un costruttore virtuale?
- 20. non può risolvere il costruttore (Intent Android)
- 21. parametri costruttore copia
- 22. Perché il costruttore base() non è necessario?
- 23. Progettazione senza costruttore predefinito
- 24. Perché FacesServlet non può avere un modello URL di/*.?
- 25. Perché PriorityQueue in Java non può avere initialCapacity 0?
- 26. costruttore Perché enum non può accedere campo statico
- 27. Una classe può avere un costruttore sia pubblico che privato?
- 28. "Il tipo non comprende i costruttori accessibili" - ha senza parametri costruttore
- 29. Costruttore Parametri ed Eredità
- 30. Modulo HTML: perché l'azione non può avere valore in essa?
Un duplicato è http://stackoverflow.com/questions/333829, "Perché non è possibile definire un costruttore predefinito per una struttura in .NET" –
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) –