Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 21258|Odgovoriti: 0

[Vir] Pravilna uporaba dinamike v C#

[Kopiraj povezavo]
Objavljeno na 7. 07. 2016 10:15:06 | | |
dinamičnost je nova funkcija FrameWork 4.0. Pojav dinamike je C# dal značilnosti šibkega jezikovnega tipa. Prevajalnik med prevajanjem ne preverja več tipa, dinamični objekt pa privzeto podpira katerokoli funkcijo, ki jo želite med prevajanjem. Na primer, tudi če ne veste ničesar o objektu, ki ga vrne metoda GetDynamicObject, lahko izvedete takšen klic kode in prevajalnik ne bo poročal o napaki:




Ko gre za pravilno uporabo, je treba najprej opozoriti na eno napačno uporabo:

Ljudje pogosto uporabljajo ključno besedo var za primerjavo z dinamičnim. Pravzaprav sta var in dinamika povsem dva pojma in ju sploh ne smemo primerjati skupaj. Ko je prevajanje, se čas prevajanja samodejno ujema z dejanskim tipom var spremenljivke in zamenja deklaracijo spremenljivke z dejanskim tipom, kar izgleda, kot da deklariramo dejanski tip pri kodiranju. Po dinamičnem prevajanju je to dejansko objektni tip, vendar prevajalnik posebej obravnava dinamični tip, tako da med prevajanjem ne izvaja preverjanja tipov, temveč ga postavi v čas izvajanja.

To je mogoče videti v oknu urejevalnika v Visual Studiu. Spremenljivke, označene kot var, podpirajo "inteligentni pomen", ker Visual Studio lahko sklepa dejanski tip var tipov, medtem ko spremenljivke, označene kot dinamične, ne podpirajo "inteligentnega smisla", ker prevajalnik ne ve ničesar o tipu svojega izvajanja v času. Uporaba Intelligent Sense za dinamične spremenljivke sproži "To dejanje bo rešeno med izvajanjem".

Dejstvo, da je dinamična spremenljivka objektna spremenljivka, je mogoče preveriti z IL kodo, IL koda pa tukaj ne bo objavljena. Seveda prevajalnik obravnava tudi dinamične deklaracije za razlikovanje med neposrednimi objektnimi spremenljivkami.

dinamičnost je široko upodobljena v MSDN za poenostavitev interoperabilnosti, in menim, da so nekateri razvijalci na tej podlagi napačno razumljeni: ker mnogi razvijalci ne znajo uporabljati kode, kot sta sekundarni razvoj COM+ in OFFICE, nujno potrebujejo razlog za dinamično aplikacijo. Torej, v vsakodnevnem razvoju menim, da je dinamika dragocena:

Predelava tipa
Prehod med dinamičnimi in drugimi vrstami primerkov je preprost, razvijalci pa lahko enostavno preklapljajo med dinamičnimi in nedinamičnimi vedenji. Vsak primer je mogoče implicitno pretvoriti v primer dinamičnega tipa, glej naslednji primer:
dinamični d1 = 7;
dinamični d2 = "niz";
dinamični d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
Nasprotno pa se implicitna pretvorba lahko dinamično uporabi na katerikoli izraz dinamičnega tipa.
In obratno, vsak izraz tipa dinamično je mogoče implicitno pretvoriti v druge tipe.
int i = d1;
niz str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Problem preobremenitve z dinamičnimi tipnimi parametri v metodi
Če je metoda poklicana kot predmet tipa dinamični ali če je klicani objekt tipa dinamični, se presoja preobremenitve zgodi med izvajanjem in ne med prevajanjem.
Dinamični jezikovni izvajalni DLR
Dinamični čas izvajanja jezika je . NET Framework 4 Beta 1 je nov nabor API-jev, ki podpirajo dinamične tipe v C# in prav tako implementirajo dinamične programske jezike, kot sta IronPython in IronRuby.
dinamično poenostavi odseve.

Prej smo uporabljali odseve, kot je ta:



Zdaj imamo poenostavljen način pisanja:


Morda bomo takšno poenostavitev zavrnili, saj se zdi, da koda ni bila bistveno zmanjšana, a če upoštevamo dve lastnosti učinkovitosti in lepote, so prednosti dinamike očitne. Prevajalnik optimizira dinamičnost tako, da je bistveno hitrejša od učinkovitosti nepredpomnjenega odboja. Če morate primerjati, lahko zaženete kodo zgoraj omenjenih dveh (klic Add method del) za 10000000, da potegnete zaključek.






Prejšnji:mvc pridobi JSON XML podatke za objavo
Naslednji:Prišlo je do napake pri prepoznavanju. Blizu vrstice 1, stolpec 10
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com