|
|
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íspevokBudúci:Došlo k chybe pri rozpoznávaní. Blízko riadku 1, stĺpec 10
|