Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 21258|Odpoveď: 0

[Zdroj] Správne použitie dynamiky v C#

[Kopírovať odkaz]
Zverejnené 7. 7. 2016 10:15:06 | | |
dynamická je nová funkcia FrameWork 4.0. Vznik dynamiky dal C# charakteristiky slabého jazykového typu. Kompilátor už počas kompilácie nekontroluje typ a dynamický objekt podporuje akúkoľvek požadovanú funkciu štandardne počas kompilácie. Napríklad, aj keď nič neviete o objekte vrátenom metódou GetDynamicObject, môžete vykonať takýto kódový volanie a kompilátor nenahlási chybu:




Čo sa týka správneho použitia, najskôr by sa malo poukázať na jedno nesprávne použitie:

Ľudia často používajú kľúčové slovo var na porovnanie s dynamickým. V skutočnosti sú var a dynamika úplne dva pojmy a nemali by sa vôbec porovnávať. Po kompilácii čas kompilácie automaticky zodpovedá skutočnému typu var premennej a nahradí deklaráciu premennej skutočným typom, čo vyzerá, akoby sme pri kódovaní deklarovali skutočný typ. Po dynamickom kompilovaní je to v skutočnosti objektový typ, ale kompilátor mu venuje špeciálne zaobchádzanie, aby počas kompilácie nevykonával žiadnu kontrolu typu, ale umiestnil kontrolu typu do behu.

Toto je viditeľné v okne editora vo Visual Studio. Premenné deklarované ako var podporujú "inteligentný zmysel", pretože Visual Studio dokáže odvodiť skutočný typ typov var, zatiaľ čo premenné deklarované ako dynamické nepodporujú "inteligentný zmysel", pretože kompilátor nič nevie o type svojho runtime. Použitie Intelligent Sense pre dynamické premenné zobrazí výzvu "Táto akcia bude vyriešená za behu".

Fakt, že dynamická premenná je objektová premenná, môže byť overený IL kódom a IL kód tu nebude zverejnený. Samozrejme, kompilátor tiež spracováva dynamické deklarácie na rozlíšenie medzi priamymi objektovými premennými.

dynamický je široko renderovaný v MSDN na zjednodušenie interoperability, a mám pocit, že práve na tomto základe sú niektorí vývojári nepochopení: keďže mnohí vývojári nevedia používať kódovanie ako sekundárny vývoj v COM+ a OFFICE, naliehavo potrebujú dôvod pre dynamickú aplikáciu. Takže v každodennom rozvoji si myslím, že dynamika je hodnotná:

Typová konverzia
Prechod medzi inštanciami dynamických typov a inými typmi inštancií je jednoduchý a vývojári môžu jednoducho prepínať medzi dynamickým a nedynamickým správaním. Každú inštanciu možno implicitne previesť na inštanciu dynamického typu, pozri nasledujúci príklad:
dynamický d1 = 7;
dynamický d2 = "reťazec";
dynamický d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
Naopak, implicitná konverzia môže byť dynamicky aplikovaná na akýkoľvek výraz typovej dynamiky.
A naopak, akýkoľvek výraz typu dynamický môže byť implicitne prevedený na iné typy.
int i = d1;
reťazec str = d2;
DátumČas dt = d3;
System.Diagnostics.Process[] procs = d4;
Problém preťaženia s dynamickými typovými parametrami v metóde
Ak je metóda volaná ako objekt typu dynamic alebo objekt, ktorý je volaný, je typu dynamic, potom sa hodnotenie preťaženia vykonáva počas behu, nie pri kompilácii.
Dynamický jazykový runtime DLR
Dynamický jazykový runtime je . NET Framework 4 Beta 1 je nová sada API, ktoré poskytujú podporu dynamických typov v C# a zároveň implementujú dynamické programovacie jazyky ako IronPython a IronRuby.
Dynamické zjednodušuje odrazy.

Predtým sme používali odrazy takto:



Teraz máme zjednodušený spôsob písania:


Môžeme takéto zjednodušenie odmietať, napokon sa zdá, že kód nebol výrazne zredukovaný, ale ak vezmeme do úvahy dve charakteristiky efektivity a krásy, výhody dynamiky sú zrejmé. Kompilátor optimalizuje dynamiku tak, aby bola oveľa rýchlejšia než efektivita necacheovaného odrazu. Ak musíte porovnať, môžete spustiť kód týchto dvoch (volanie Add method part) na 1000000 a vyvodiť záver.






Predchádzajúci:mvc načíta JSON XML dáta pre príspevok
Budúci:Došlo k chybe pri rozpoznávaní. Blízko riadku 1, stĺpec 10
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com