Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 21258|Odpověď: 0

[Zdroj] Správné použití dynamického v C#

[Kopírovat odkaz]
Zveřejněno 07.07.2016 10:15:06 | | |
dynamická je nová funkce FrameWork 4.0. Vznik dynamiky dal C# charakteristiky slabého jazykového typu. Kompilátor již při kompilaci nekontroluje typ a dynamický objekt ve výchozím nastavení podporuje jakoukoli požadovanou funkce během kompilace. Například i když o objektu vráceném metodou GetDynamicObject nic nevíte, můžete takto provést volání kódu a kompilátor chybu nenahlásí:




Pokud jde o správné použití, je třeba nejprve upozornit na jedno špatné použití:

Lidé často používají klíčové slovo var k porovnání s dynamickým. Ve skutečnosti jsou var a dynamika zcela dva pojmy a neměly by se vůbec srovnávat. Po kompilaci čas kompilace automaticky odpovídá skutečnému typu proměnné var a nahradí deklaraci proměnné skutečným typem, což vypadá, jako bychom deklarovali skutečný typ při kódování. Po dynamickém zkompilování je to ve skutečnosti objektový typ, ale kompilátor s dynamickým typem zachází zvlášť, takže během kompilace neprovádí žádnou kontrolu typu, ale umístí kontrolu typu do běhu času.

To je vidět v okně editoru ve Visual Studiu. Proměnné deklarované jako vars podporují "inteligentní smysl", protože Visual Studio dokáže odvodit skutečný typ varových typů, zatímco proměnné deklarované jako dynamické "inteligentní smysl" nepodporují, protože kompilátor nic neví o typu svého runtime. Použití Intelligent Sense pro dynamické proměnné vyzve "Tato akce bude vyřešena za běhu".

Fakt, že dynamická proměnná je objektová proměnná, lze ověřit IL kódem, a IL kód zde nebude zveřejněn. Samozřejmě kompilátor také zpracovává dynamické deklarace pro rozlišení mezi přímými objektovými proměnnými.

dynamické je v MSDN široce vykreslováno, aby se zjednodušila interoperabilita, a mám pocit, že právě na tomto základě jsou někteří vývojáři nepochopeni: protože mnoho vývojářů neumí používat kódování jako COM+ a sekundární vývoj v OFFICE, naléhavě potřebují důvod pro dynamickou aplikaci. Takže v každodenním vývoji si myslím, že dynamika je cenná:

Typová konverze
Přechod mezi dynamickými typovými instancemi a jinými typy instancí je jednoduchý a vývojáři mohou snadno přepínat mezi dynamickým a nedynamickým chováním. Každou instanci lze implicitně převést na instanci dynamického typu, viz následující příklad:
dynamické d1 = 7;
dynamické d2 = "struna";
dynamické d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
Naopak implicitní převod lze dynamicky aplikovat na jakýkoli výraz typu dynamic.
A naopak, jakýkoli výraz typu dynamic lze implicitně převést na jiné typy.
int i = d1;
struna str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Problém přetížení s dynamickými typovými parametry v metodě
Pokud je metoda volána jako objekt typu dynamic, nebo je volán objekt typu dynamic, pak se rozhodnutí o přetížení provádí za běhu a nikoli při kompilaci.
Dynamický jazyk pro běh v běhu
Dynamické běhací doba jazyka je . NET Framework 4 Beta 1 je nová sada API, která podporuje dynamické typy v C# a také implementuje dynamické programovací jazyky jako IronPython a IronRuby.
Dynamické zjednodušuje odrazy.

Dříve jsme používali odrazy takto:



Nyní máme zjednodušený způsob, jak napsat:


Můžeme takové zjednodušení odmítat, koneckonců se zdá, že kód nebyl příliš zmenšen, ale pokud vezmeme v úvahu dvě charakteristiky efektivity a krásy, pak jsou výhody dynamiky zřejmé. Kompilátor optimalizuje dynamiku tak, aby byla mnohem rychlejší než efektivita necacheovaných reflexí. Pokud musíte porovnat, můžete spustit kód těchto dvou (volání Add method část) na 1000000 a udělat závěr.






Předchozí:mvc načítá JSON XML data pro příspěvek
Další:Došlo k chybě rozpoznávání. Blízko řádku 1, sloupec 10
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com