Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 21258|Vastaus: 0

[Lähde] Dynamiikan oikea käyttö C#:ssa

[Kopioi linkki]
Julkaistu 7.7.2016 10.15.06 | | |
dynaaminen on uusi ominaisuus FrameWork 4.0:ssa. Dynaamisen synty on antanut C#:lle heikon kielityypin ominaisuudet. Kääntäjä ei enää tarkista tyyppiä käännösaikana, ja dynaaminen objekti tukee oletuksena mitä tahansa haluttua ominaisuutta käännösajan aikana. Esimerkiksi, vaikka et tietäisi mitään GetDynamicObject-metodin palauttamasta objektista, voit tehdä koodikutsun näin, eikä kääntäjä raportoi virhettä:




Kun kyse on oikeasta käytöstä, tulisi ensin osoittaa yksi väärä käyttö:

Ihmiset käyttävät usein avainsanaa var vertaillakseen dynamiikkaan. Itse asiassa VAR ja dynaaminen ovat täysin kaksi käsitettä, eikä niitä pitäisi verrata yhteen lainkaan. Kun käännösaika on käännetty, käännösaika vastaa automaattisesti var-muuttujan todellista tyyppiä ja korvaa muuttujan määritelmän varsinaisella tyypillä, mikä näyttää siltä, että määritämme varsinaisen tyypin koodauksessa. Kun dynaaminen on käännetty, se on itse asiassa objektityyppi, mutta kääntäjä käsittelee dynaamista tyyppiä erityisesti, jotta se ei tee tyypin tarkistusta kääntämisen aikana, vaan laittaa tyyppitarkistuksen ajonaikaan.

Tämä näkyy Visual Studion editori-ikkunassa. VAR:iksi ilmoitetut muuttujat tukevat "älykästä aistia", koska Visual Studio voi päätellä var-tyyppien todellisen tyypin, kun taas dynaamisiksi ilmoitetut muuttujat eivät tue "älykästä aistia", koska kääntäjä ei tiedä mitään suoritusaikansa tyypistä. Intelligent Sensin käyttäminen dynaamisille muuttujille antaa kysymyksen "Tämä toimenpide ratkaistaan ajonaikaisesti".

Se, että dynaaminen muuttuja on objektimuuttuja, voidaan varmistaa IL-koodilla, eikä IL-koodia julkaista täällä. Tietenkin kääntäjä käsittelee myös dynaamisia määrittelyjä erottaakseen suorat objektimuuttujat.

Dynaaminen renderöidään laajasti MSDN:ssä yhteentoimivuuden helpottamiseksi, ja koen, että juuri tästä syystä jotkut kehittäjät ymmärretään väärin: koska monet kehittäjät eivät osaa käyttää koodausta, kuten COM+ ja OFFICE-toissijainen kehitys, he tarvitsevat kiireellisesti dynaamisen sovelluksen syyn. Joten päivittäisessä kehityksessä dynamiikka on arvokasta:

Tyyppimuunnos
Siirtyminen dynaamisten tyyppisten instanssien ja muiden instanssityyppien välillä on helppoa, ja kehittäjät voivat helposti vaihtaa dynmisen ja ei-dynaamisen käyttäytymisen välillä. Mikä tahansa instanssi voidaan implisiittisesti muuntaa dynaamiseksi tyyppiseksi instanssiksi, katso seuraava esimerkki:
dynaaminen d1 = 7;
dynaaminen d2 = "merkkijono";
dynaaminen d3 = System.DateTime.Today;
dynaaminen d4 = System.Diagnostics.Process.GetProcesses();
Vastaavasti implisiittinen muunnos voidaan dynaamisesti soveltaa mihin tahansa tyyppidynaamiseen lausekkeeseen
Ja päinvastoin, mikä tahansa tyyppidynaamisen lauseke voidaan myös implisiittisesti muuntaa muiksi tyypeiksi.
int i = d1;
string str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Ylikuormitusongelma dynaamisilla tyyppiparametreilla menetelmässä
Jos metodia kutsutaan ohittamaan dynaamisen tyyppisen objektin tai kutsuttava objekti on dynaamisen tyyppi, ylikuormituksen arviointi tapahtuu ajonaikaisesti eikä käännösaikana.
Dynaamisen kielen ajonaikainen DLR
Dynaaminen kieliajonaika on . NET Framework 4 Beta 1 on uusi API-sarja, joka tukee dynaamisia tyyppejä C#:ssa ja toteuttaa myös dynaamisia ohjelmointikieliä kuten IronPython ja IronRuby.
Dynaaminen yksinkertaistaa heijastuksia.

Aiemmin käytimme tällaisia pohdintoja:



Nyt meillä on yksinkertaistettu tapa kirjoittaa:


Saatamme vähätellä tällaista yksinkertaistamista, sillä näyttää siltä, ettei koodia ole vähennetty paljon, mutta jos otamme huomioon tehokkuuden ja kauneuden, dynaamisen edut ovat ilmeisiä. Kääntäjä optimoi dynaamisen paljon nopeammaksi kuin välimuistiton heijastustehokkuus. Jos sinun täytyy verrata, voit ajaa edellä mainittujen kahden koodin (kutsu Add method -osa) 1000000:lle saadaksesi johtopäätöksen.






Edellinen:mvc hakee JSON XML -tiedot julkaisua varten
Seuraava:Tunnistusvirhe tapahtui. lähellä linjaa 1, sarake 10
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com