Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 21258|Risposta: 0

[Fonte] Uso corretto della dinamica in C#

[Copiato link]
Pubblicato su 07/07/2016 10:15:06 | | |
dynamic è una nuova funzionalità di FrameWork 4.0. L'emergere della dinamica ha conferito a C# le caratteristiche di un tipo di linguaggio debole. Il compilatore non controlla più il tipo al momento della compilazione, e l'oggetto dinamico supporta di default qualsiasi funzionalità tu voglia durante la compilazione. Ad esempio, anche se non sai nulla dell'oggetto restituito dal metodo GetDynamicObject, puoi effettuare una chiamata al codice come questa, e il compilatore non riporterà un errore:




Quando si tratta di un uso corretto, allora un uso errato dovrebbe essere indicato prima:

Le persone spesso usano la parola chiave var per confrontare con la dinamica. In effetti, var e dinamico sono completamente due concetti e non dovrebbero essere confrontati insieme. Una volta compilata, il tempo di compilazione corrisponde automaticamente al tipo effettivo della variabile var e sostituisce la dichiarazione della variabile con il tipo effettivo, che sembra che stiamo dichiarando il tipo effettivo durante la codifica. Dopo la compilazione dinamica, in realtà è un tipo oggetto, ma il compilatore applicherà un trattamento speciale al tipo dinamico, così da non eseguire alcun controllo dei tipi durante la compilazione, ma inserisce il controllo del tipo in runtime.

Questo può essere visto nella finestra dell'editor in Visual Studio. Le variabili dichiarate come var supportano il "smart sense" perché Visual Studio può dedurre il tipo effettivo di vari, mentre le variabili dichiarate come dinamiche non supportano il "intelligent sense" perché il compilatore non sa nulla del tipo di runtime. Usare Intelligent Sense per le variabili dinamiche indica "Questa azione sarà risolta a runtime".

Il fatto che la variabile dinamica sia una variabile oggetto può essere verificato dal codice IL, e il codice IL non sarà pubblicato qui. Naturalmente, il compilatore gestisce anche dichiarazioni dinamiche per distinguere tra variabili oggetto dirette.

il dynamic è ampiamente reso in MSDN per semplificare l'interoperabilità, e ritengo che sia su questo punto che alcuni sviluppatori siano fraintesi: poiché molti sviluppatori non sanno usare codici come COM+ e OFFICE, hanno urgentemente bisogno di una logica di applicazione dinamica. Quindi, nello sviluppo quotidiano, penso che la dinamica sia preziosa:

Conversione di tipo
La transizione tra istanze di tipo Dynamic e altri tipi di istanze è semplice, e gli sviluppatori possono facilmente passare da comportamenti dinamici a non dinamici. Qualsiasi istanza può essere implicitamente convertita in un'istanza di tipo dinamico, vedi il seguente esempio:
dinamico d1 = 7;
dinamico d2 = "una stringa";
dinamico d3 = System.DateTime.Today;
dinamico d4 = System.Diagnostics.Process.GetProcesses();
Viceversa, una conversione implicita può essere applicata dinamicamente a qualsiasi espressione di dinamica di tipo.
E viceversa, qualsiasi espressione di dinamica di tipo può anche essere implicitamente convertita in altri tipi.
int i = d1;
stringa forza = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Problema di sovraccarico con i parametri dinamici del tipo nel metodo
Se un metodo viene chiamato "
DLR a runtime dinamico del linguaggio
Il runtime dinamico del linguaggio è . NET Framework 4 Beta 1 è un nuovo insieme di API che supportano tipi dinamici in C# e implementano anche linguaggi di programmazione dinamica come IronPython e IronRuby.
La dinamica semplifica i riflessi.

In precedenza usavamo riflessioni come questa:



Ora abbiamo un modo semplificato di scrivere:


Potremmo essere sminuenti verso tale semplificazione, dopotutto sembra che il codice non sia stato molto ridotto, ma se consideriamo le due caratteristiche di efficienza e bellezza, allora i vantaggi della dinamica sono evidenti. Il compilatore ottimizza la dinamica per renderla molto più veloce dell'efficienza di riflessione non memorizzata. Se devi confrontare, puoi eseguire il codice dei due sopra (la parte del metodo di chiamata Aggiunta) per 1000000 per trarre una conclusione.






Precedente:mvc recupera i dati XML JSON per il post
Prossimo:Si è verificato un errore di riconoscimento. vicino alla linea 1, colonna 10
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com