Pensi che il nuovo tipo dinamico per C# sia un serio svantaggio per quanto riguarda i vantaggi di un linguaggio tipizzato forte o ritieni che i vantaggi (come aggirare quelle riflessioni) superino i rischi?Tipi dinamici C#: paradiso o inferno?
risposta
L'utilizzo principale della parola chiave dinamica sembra essere per l'interazione ASP.NET in cui si sta lavorando con un linguaggio tipizzato debole come Javascript, o per il passaggio di parametri all'interno di classi helper ASP.NET MVC in una vista.
Non penso che nessun programmatore C# esperto inizi a usarlo per la sostituzione del sistema di tipi, e se lo facessero verrebbero abbattuti abbastanza rapidamente.
Finché non viene utilizzato nei luoghi sbagliati, penso che sia una grande aggiunta al linguaggio e al framework. Usare la dinamica solo perché il tuo pigro è una brutta cosa ma quando ne hai veramente bisogno (COM, interazione con javascript e cos'altro hai) è fantastico!
Se usato con parsimonia e con cura, trovo che sia un'aggiunta preziosa. Come menzionato da @JWL_, l'associazione COM in C# era dolorosa prima della dinamica.
Run-time overload resolution è un'altra area in cui la luce brilla. Quando si desidera elaborare in modo polimorfico i discendenti di un tipo di base e non si controlla la gerarchia, ciò elimina la necessità di una grande istruzione switch con il cast. Notare che è possibile intercettare l'eccezione di runtime specifica.
Ho incontrato questo quando si implementa TrackingParticipant.Track in WF4. Il tuo codice deve conoscere il tipo di runtime dello TrackingRecord (see the partial hierarchy).
- 1. Permetti il mapping di tipi dinamici usando AutoMapper o simili?
- 2. Trasmissione di tipi dinamici dall'ID alla classe nell'obiettivo c
- 3. C# 4: Esempio di tipi dinamici del mondo reale
- 4. Posso usare i tipi dinamici in F #?
- 5. PropertyGrid e tipi dinamici di oggetti
- 6. Managing OSGi Dipendenza inferno
- 7. Importazioni circolari inferno
- 8. Dati dinamici in C++
- 9. Alternative/Strumenti per la # define inferno C/C++
- 10. Evitare .NET versioning inferno
- 11. .NET .config INFERNO
- 12. profilo di provisioning inferno
- 13. Dipendenza componente personalizzata inferno
- 14. codificanti caratteri speciali tedeschi inferno
- 15. Inizializzazione di array dinamici C
- 16. C# - sono parametri dinamici Boxed
- 17. Come creare un elenco di tipi dinamici <T>
- 18. Definizione di array dinamici bidimensionali con tipi diversi
- 19. Hai bisogno di chiarimenti sui tipi dinamici in golang
- 20. PHP: blocchi catch dinamici o programmatico
- 21. jQuery + tablesorter + IE7 + tabelle grandi = inferno
- 22. Come generare nomi di oggetti dinamici C++?
- 23. Riferimento ai membri dinamici dell'oggetto C# "dinamico"
- 24. creazione di array dinamici di stringhe C++
- 25. Invio di metodi dinamici in C
- 26. Creazione di schemi Regex dinamici in C#
- 27. comando adb inferno (non è un refuso)
- 28. C# switch con tipi
- 29. tipi di funzione C++
- 30. Modello C++ - Tipi multipli