Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 21258|Odpowiedź: 0

[Źródło] Poprawne użycie dynamicznego w C#

[Skopiuj link]
Opublikowano 07.07.2016 10:15:06 | | |
dynamiczna to nowa funkcja FrameWork 4.0. Pojawienie się dynamicznego nadał C# cechy słabego typu językowego. Kompilator nie sprawdza już typu podczas kompilacji, a dynamiczny obiekt domyślnie obsługuje dowolną funkcję, jaką chcesz, podczas kompilacji. Na przykład, nawet jeśli nic nie wiesz o obiekcie zwracanym przez metodę GetDynamicObject, możesz wykonać takie wywołanie kodu i kompilator nie zgłosi błędu:




Jeśli chodzi o poprawne użycie, należy najpierw wskazać jedno błędne użycie:

Ludzie często używają słowa kluczowego var, aby porównać z dynamicznym. W rzeczywistości var i dynamiczne to zupełnie dwa pojęcia i nie powinny być w ogóle porównywane razem. Po skompilowaniu czas kompilacji automatycznie odpowiada rzeczywistemu typowi zmiennej var i zastępuje deklarację zmiennej rzeczywistym typem, co wygląda tak, jakbyśmy deklarowali faktyczny typ podczas kodowania. Po kompilacji dynamicznej jest to faktycznie typ obiektowy, ale kompilator specjalnie traktuje ten typ dynamiczny, dzięki czemu nie wykonuje sprawdzania typów podczas kompilacji, lecz umieszcza sprawdzanie typu w czasie rzeczywistym.

Można to zobaczyć w oknie edytora w Visual Studio. Zmienne deklarowane jako vars wspierają "inteligentne poczucie", ponieważ Visual Studio potrafi wywnioskować rzeczywisty typ typów zmiennych, podczas gdy zmienne zadeklarowane jako dynamiczne nie obsługują "inteligentnego sensu", ponieważ kompilator nie zna się na typie swojego czasu działania. Użycie Intelligent Sense dla zmiennych dynamicznych wywołuje komunikat "Ta akcja zostanie rozwiązana w czasie działania".

Fakt, że zmienna dynamiczna jest zmienną obiektową, można zweryfikować za pomocą kodu IL, a kod IL nie zostanie tutaj opublikowany. Oczywiście kompilator obsługuje również deklaracje dynamiczne, aby rozróżnić bezpośrednie zmienne obiektowe.

dynamiczne jest szeroko renderowane w MSDN, aby uprościć interoperacyjność, i uważam, że właśnie na tej podstawie niektórzy programiści są źle rozumieni: ponieważ wielu programistów nie potrafi korzystać z kodowania takiego jak COM+ czy OFFICE w drugim programie, pilnie potrzebują dynamicznego uzasadnienia aplikacji. Dlatego w codziennym rozwoju uważam, że dynamika jest cenna:

Konwersja typu
Przejście między instancjami typu dynamicznego a innymi typami jest proste, a deweloperzy mogą łatwo przełączać się między zachowaniami dynamicznymi a niedynamicznymi. Każdą instancję można domyślnie przekształcić w instancję typu dynamicznego, zobacz następujący przykład:
dynamiczne d1 = 7;
dynamiczny d2 = "struna";
dynamiczne d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
Natomiast konwersja niejawna może być dynamicznie stosowana do dowolnego wyrażenia dynamicznego typu.
I odwrotnie, każde wyrażenie dynamicznego typu może być również niejawnie przekształcone w inne typy.
int i = d1;
strumień str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
Problem przeciążenia z parametrami typu dynamicznego w metodzie
Jeśli metoda jest wywoływana jako obiekt o dynamicznym typie lub obiekt wywoływany jest dynamiczny typu dynamic, to ocena przeciążenia następuje w czasie działania, a nie w czasie kompilacji.
Dynamiczny język DLR w czasie rzeczywistym
Dynamiczne środowisko wykonawcze języka to . NET Framework 4 Beta 1 to nowy zestaw API wspierających typy dynamiczne w C# oraz implementujących języki programowania dynamicznego, takich jak IronPython i IronRuby.
dynamiczne upraszcza odbicia.

Wcześniej używaliśmy odbić w ten sposób:



Teraz mamy uproszczony sposób pisania:


Możemy lekceważyć takie uproszczenie, w końcu wydaje się, że kod nie został znacznie zredukowany, ale jeśli weźmiemy pod uwagę dwie cechy: efektywność i piękno, to zalety dynamiczności są oczywiste. Kompilator optymizuje dynamikę tak, aby była znacznie szybsza niż efektywność odbicia bez pamięci podręcznej. Jeśli musisz porównać, możesz uruchomić kod powyższych dwóch (część wywołania Add method) na 1000000, aby wyciągnąć wniosek.






Poprzedni:mvc pobiera dane JSON XML dla posta
Następny:Wystąpił błąd rozpoznawczy. Blisko linii 1, kolumna 10
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com