Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 21258|Atbildi: 0

[Avots] Pareiza dinamikas izmantošana C#

[Kopēt saiti]
Publicēts 07.07.2016 10:15:06 | | |
dinamiska ir jauna FrameWork 4.0 funkcija. Dinamikas parādīšanās ir piešķīrusi C# vāja valodas tipa īpašības. Kompilators vairs nepārbauda tipu kompilācijas laikā, un dinamiskais objekts kompilācijas laikā pēc noklusējuma atbalsta jebkuru vajadzīgo līdzekli. Piemēram, pat ja neko nezināt par objektu, ko atgriež metode GetDynamicObject, varat veikt šādu koda izsaukumu, un kompilators neziņos par kļūdu:




Kad runa ir par pareizu lietojumu, tad vispirms jānorāda viens nepareizs lietojums:

Cilvēki bieži izmanto atslēgvārdu var, lai salīdzinātu ar dinamisko. Patiesībā var un dinamika ir pilnīgi divi jēdzieni, un tos vispār nevajadzētu salīdzināt kopā. Pēc kompilēšanas laiks automātiski atbilst faktiskajam var mainīgā tipam un aizstāj mainīgā deklarāciju ar faktisko tipu, kas izskatās tā, it kā mēs kodēšanas laikā deklarētu faktisko tipu. Pēc dinamikas kompilēšanas tas faktiski ir objekta tips, bet kompilators veiks īpašu dinamiskā tipa apstrādi, lai kompilācijas laikā neveiktu nekādu tipa pārbaudi, bet ievietotu tipa pārbaudi izpildlaikā.

To var redzēt Visual Studio redaktora logā. Mainīgie, kas deklarēti kā vars, atbalsta "inteliģento sajūtu", jo Visual Studio var secināt faktisko var tipu tipu, bet mainīgie, kas deklarēti kā dinamiski, neatbalsta "inteliģento sajūtu", jo kompilators neko nezina par tā izpildlaika tipu. Izmantojot inteliģento sensoru dinamiskajiem mainīgajiem, tiek parādīts uzvednes "Šī darbība tiks atrisināta izpildlaikā".

To, ka dinamiskais mainīgais ir objekta mainīgais, var pārbaudīt ar IL kodu, un IL kods šeit netiks publicēts. Protams, kompilators apstrādā arī dinamiskas deklarācijas, lai atšķirtu tiešos objekta mainīgos.

dinamisks tiek plaši atveidots MSDN, lai vienkāršotu sadarbspēju, un es uzskatu, ka tas ir balstīts uz to, ka daži izstrādātāji ir pārprasti: tā kā daudzi izstrādātāji nezina, kā izmantot kodēšanu, piemēram, COM+ un OFFICE sekundāro izstrādi, viņiem steidzami ir nepieciešams dinamisks lietojumprogrammu iemesls. Tātad, ikdienas attīstībā, es domāju, ka dinamika ir vērtīga:

Tipa konvertēšana
Pāreja starp dinamiskā tipa instancēm un cita veida instancēm ir vienkārša, un izstrādātāji var viegli pārslēgties starp dinamisku un nedinamisku uzvedību. Jebkuru instanci var netieši pārvērst par dinamiska tipa instanci, skatiet šo piemēru:
dinamiskais d1 = 7;
dinamiskais d2 = "virkne";
dinamiskais d3 = System.DateTime.Today;
dinamiskais d4 = System.Diagnostics.Process.GetProcesses();
Un otrādi, netiešo konversiju var dinamiski piemērot jebkurai dinamiskā tipa izteiksmei.
Un otrādi, jebkuru tipa dinamikas izteiksmi var arī netieši pārvērst citos tipos.
int i = d1;
virkne str = d2;
DatumsLaiks dt = d3;
System.Diagnostics.Process[] procs = d4;
Pārslodzes problēma ar dinamiskā tipa parametriem metodē
Ja metode tiek saukta par dinamiska tipa objektu vai izsauktais objekts ir dinamisks, tad spriedums par pārslodzi notiek izpildlaikā, nevis kompilācijas laikā.
Dinamiskās valodas izpildlaika DLR
Dinamiskās valodas izpildlaiks ir . NET Framework 4 Beta 1 ir jauns API kopums, kas nodrošina atbalstu dinamiskiem tipiem C#, kā arī ievieš dinamiskās programmēšanas valodas, piemēram, IronPython un IronRuby.
Dinamika vienkāršo atspulgus.

Iepriekš mēs izmantojām šādas pārdomas:



Tagad mums ir vienkāršots veids, kā rakstīt:


Mēs varam noraidīt šādu vienkāršošanu, galu galā, šķiet, ka kods nav daudz samazināts, bet, ja mēs ņemam vērā divas efektivitātes un skaistuma īpašības, tad dinamiskās priekšrocības ir acīmredzamas. Kompilators optimizē dinamiku, lai tas būtu daudz ātrāks nekā nekešatmiņas atstarošanas efektivitāte. Ja jums ir jāsalīdzina, varat palaist iepriekš minēto divu kodu (izsaukums Pievienot metodes daļu) 1000000, lai izdarītu secinājumu.






Iepriekšējo:mvc iegūst JSON XML datus ziņai
Nākamo:Radās atpazīšanas kļūda. Netālu no 1. rindas, 10. sleja
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com