See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 21258|Vastuse: 0

[Allikas] Dünaamika õige kasutamine C#-s

[Kopeeri link]
Postitatud 07.07.2016 10:15:06 | | |
dünaamiline on FrameWork 4.0 uus funktsioon. Dünaamika tekkimine on andnud C#-le nõrga keeletüübi omadused. Kompilaator ei kontrolli enam tüüpi kompileerimise ajal ning dünaamiline objekt toetab vaikimisi kõiki soovitud funktsioone kompileerimise ajal. Näiteks, isegi kui sa ei tea midagi GetDynamicObject meetodi tagastatud objekti kohta, saad teha sellise koodikutse ja kompilaator ei teata veast:




Õige kasutuse puhul tuleks esmalt välja tuua üks vale kasutus:

Inimesed kasutavad sageli märksõna var, et võrrelda dünaamilise sõnaga. Tegelikult on VAR ja dünaamika täiesti kaks mõistet ning neid ei tohiks üldse omavahel võrrelda. Kui kompileerimine on kompileeritud, vastab kompileerimisaeg automaatselt var-muutuja tegelikule tüübile ja asendab muutuja deklaratsiooni tegeliku tüübiga, mis näib kodeerimisel välja nägevat, nagu deklareeriksime tegeliku tüübi. Pärast dünaamika kompileerimist on tegemist tegelikult objektitüübiga, kuid kompilaator teeb dünaamilisele tüübile erilise käsitluse, nii et kompileerimise ajal tüübikontrolli ei tehtaks, vaid sisestab tüübikontrolli käitusaega.

Seda saab näha Visual Studio redaktori aknas. VAR-iks deklareeritud muutujad toetavad "intelligentset tunnetust", kuna Visual Studio suudab tuletada tegeliku vari tüübi, samas kui dünaamiliseks deklareeritud muutujad ei toeta "intelligentset tunnetust", kuna kompilaator ei tea midagi oma käitusaja tüübist. Intelligent Sense'i kasutamine dünaamiliste muutujate jaoks annab küsimuse: "See tegevus lahendatakse käitusajal".

Fakt, et dünaamiline muutuja on objektimuutuja, saab kontrollida IL-koodiga, kuid IL-koodi siin ei postitata. Loomulikult haldab kompilaator ka dünaamilisi deklaratsioone, et eristada otseseid objektimuutujaid.

dünaamiline on MSDN-is laialdaselt renderdatud, et lihtsustada koostalitlusvõimet, ja tunnen, et just selle põhjal mõistetakse mõningaid arendajaid valesti: kuna paljud arendajad ei oska kasutada koodi nagu COM+ ja OFFICE sekundaarne arendus, vajavad nad kiiresti dünaamilist rakenduse põhjust. Seega arvan, et igapäevases arengus on dünaamika väärtuslik:

Tüübi ümberehitus
Dünaamilise tüübi ja teiste instantside vahel üleminek on lihtne ning arendajad saavad hõlpsasti vahetada dünmiliste ja mittedünaamiliste käitumiste vahel. Iga instantsi saab kaudselt teisendada dünaamilise tüübi instantsiks, vt järgmist näidet:
dünaamiline d1 = 7;
dünaamiline d2 = "string";
dünaamiline d3 = System.DateTime.Today;
dünaamiline d4 = System.Diagnostics.Process.GetProcesses();
Vastupidi, kaudset teisendust saab dünaamiliselt rakendada igale tüübidünaamilise avaldisele.
Ja vastupidi, iga dünaamilise tüübi avaldist saab kaudselt teisendada teisteks tüüpideks.
int i = d1;
string str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Ülekoormuse probleem dünaamiliste tüübiparameetritega meetodis
Kui meetod kutsutakse edasi dünaamilise tüübiga objekti või kutsutav objekt on dünaamilise tüübi dünaamiline, siis ülekoormuse hinnang toimub käitusajal, mitte kompileerimisel.
Dünaamilise keele käitusaegne DLR
Dünaamilise keele käitusaeg on . NET Framework 4 Beta 1 on uus API-de komplekt, mis toetab dünaamilisi tüüpe C#-s ning rakendab ka dünaamilisi programmeerimiskeeli nagu IronPython ja IronRuby.
dünaamika lihtsustab peegeldusi.

Varem kasutasime selliseid peegeldusi:



Nüüd on meil lihtsustatud viis kirjutamiseks:


Me võime sellist lihtsustamist eirata – tundub, et koodi pole palju vähendatud, kuid kui arvestada kahte omadust – tõhusust ja ilu, siis on dünaamika eelised ilmsed. Kompilaator optimeerib dünaamika palju kiiremaks kui vahemäluta peegeldusefektiivsus. Kui pead võrdlema, võid käivitada eelneva kahe koodi (kutsu Lisa meetodi osa) 1000000 jaoks, et teha järeldus.






Eelmine:mvc toob postituse jaoks JSON XML andmed
Järgmine:Tekkis äratundmisviga. 1. joone lähedal, kolonn 10
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com