Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 21258|Antwoord: 0

[Bron] Correct gebruik van dynamisch in C#

[Link kopiëren]
Geplaatst op 07-07-2016 10:15:06 | | |
dynamisch is een nieuwe functie van FrameWork 4.0. De opkomst van dynamisch heeft C# de kenmerken van een zwak taaltype gegeven. De compiler controleert het type niet langer tijdens het compileren en het dynamische object ondersteunt standaard elke gewenste functie tijdens het compileren tijd. Bijvoorbeeld, zelfs als je niets weet over het object dat door de GetDynamicObject-methode wordt teruggegeven, kun je zo'n code-aanroep doen, en de compiler zal geen fout rapporteren:




Als het gaat om correct gebruik, moet eerst één verkeerd gebruik worden aangemerkt:

Mensen gebruiken vaak het trefwoord var om te vergelijken met dynamisch. Sterker nog, var en dynamisch zijn volledig twee begrippen en moeten ze helemaal niet met elkaar worden vergeleken. Eenmaal gecompileerd, komt de compileertijd automatisch overeen met het daadwerkelijke type van de variabele en vervangt de declaratie van de variabele door het werkelijke type, wat eruitziet alsof we het daadwerkelijke type declareren bij het coderen. Nadat dynamisch is gecompileerd, is het eigenlijk een objecttype, maar de compiler behandelt het dynamische type apart, zodat er tijdens compilatie geen typecontrole wordt uitgevoerd, maar de typecontrole in de runtime wordt geplaatst.

Dit is te zien in het editorvenster in Visual Studio. Variabelen die als vars zijn gedeclareerd ondersteunen "intelligent sense" omdat Visual Studio het daadwerkelijke type var-types kan afleiden, terwijl variabelen die als dynamisch zijn gedeclareerd geen "intelligent sense" ondersteunen omdat de compiler niets weet over het type van zijn runtime. Met Intelligent Sense voor dynamische variabelen krijg je prompts "Deze actie wordt tijdens runtime opgelost".

Het feit dat de dynamische variabele een objectvariabele is, kan worden geverifieerd door de IL-code, en de IL-code zal hier niet worden vermeld. Natuurlijk behandelt de compiler ook dynamische declaraties om onderscheid te maken tussen directe objectvariabelen.

dynamisch wordt veel weergegeven in MSDN om interoperabiliteit te vereenvoudigen, en ik denk dat sommige ontwikkelaars hierop gebaseerd zijn dat ze verkeerd begrepen worden: omdat veel ontwikkelaars niet weten hoe ze code zoals COM+ en OFFICE secundaire ontwikkeling moeten gebruiken, hebben ze dringend een dynamische applicatie-reden nodig. Dus, in dagelijkse ontwikkeling denk ik dat dynamiek waardevol is:

Typeconversie
Het overschakelen tussen dynamische instanties en andere typen instanties is eenvoudig, en ontwikkelaars kunnen gemakkelijk schakelen tussen dynamisch en niet-dynamisch gedrag. Elke instantie kan impliciet worden omgezet in een dynamisch type instantie, zie het volgende voorbeeld:
dynamisch d1 = 7;
dynamisch d2 = "een snaar";
dynamisch d3 = System.DateTime.Today;
dynamisch d4 = System.Diagnostics.Process.GetProcesses();
Omgekeerd kan een impliciete conversie dynamisch worden toegepast op elke uitdrukking van type dynamisch.
En omgekeerd kan elke uitdrukking van type dynamisch ook impliciet worden omgezet naar andere types.
int i = d1;
snaar str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Overbelastingsprobleem met dynamische typeparameters in de methode
Als een methode wordt aangeroepen een object van type dynamisch laat passeren, of het object dat wordt aangeroepen van type dynamisch is, vindt de beoordeling van overbelasting plaats tijdens runtime en niet tijdens compilatie.
Dynamische taalruntime DLR
De dynamische taalruntime is . NET Framework 4 Beta 1 is een nieuwe set API's die ondersteuning bieden voor dynamische types in C# en ook dynamische programmeertalen zoals IronPython en IronRuby implementeren.
Dynamisch vereenvoudigt reflecties.

Eerder gebruikten we reflecties zoals deze:



Nu hebben we een vereenvoudigde manier om te schrijven:


We kunnen zo'n vereenvoudiging misschien afwijzen, want het lijkt erop dat de code niet veel is ingekort, maar als we rekening houden met de twee kenmerken van efficiëntie en schoonheid, zijn de voordelen van dynamisch duidelijk. De compiler optimaliseert de dynamische efficiëntie veel sneller dan de niet-gecachete reflectie-efficiëntie. Als je moet vergelijken, kun je de code van bovenstaande twee (het aanroepende Add-methodegedeelte) uitvoeren voor 1000000 om een conclusie te trekken.






Vorig:mvc haalt de JSON XML-gegevens op voor de post
Volgend:Er deed zich een herkenningsfout voor. Dicht bij lijn 1, kolom 10
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com