Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 31087|Odgovoriti: 0

[Vir] C# Anonimni dnevnik učenja tipov

[Kopiraj povezavo]
Objavljeno na 16. 10. 2020 17:41:04 | | | |
Ko ne želimo definirati kompleksnih razredov, kot so kompleksne metode, dogodki in konstruktorji, lahko dinamično ustvarimo prilagojen podatkovni tip -> anonimni tip.

1. Določite vrsto anonimnosti

Pri definiranju anonimnega tipa morate uporabiti ključno besedo var in inicializacijsko sintakso objekta.

var: Prevajalnik samodejno ustvari novo definicijo razreda ob prevajanju (imena razreda v C# kodi ne vidimo).

Inicializacija: Prevajalniku bo naročil, naj ustvari zasebna ozadja in (samo za branje) lastnosti za novo ustvarjeni tip.

Zgradite anonimno vrsto tako, da posredujete parametre in natisnete ustrezne informacije



Klic: Anonimne tipe je mogoče zgraditi tudi s trdo kodo



2. Notranja predstavitev anonimnih tipov

Vsi anonimni tipi samodejno podedujejo od objekta, zato lahko na objektu avtomobila uporabimo ToString, GetHashCode, Equals, poskusimo to poimenovati:



Klici in rezultati:







Tip objekta avtomobila je: <>f__AnonymousType03 (tvoj je lahko drugačen), anonimno ime tipa začuti prevajalnik, ne moremo posegati, CIL koda.

3. Implementacija metod ToString() in GetHashCode().

1.ToString()



2. GetHashCode()

Uporablja spremenljivko vsake anonimne vrste za izračun zgoščene vrednosti kot vhoda tipa System.Collections.Generic.EqualityComparer in <T>proizvede isto zgoščevalno vrednost le, če imata oba anonimna tipa enake lastnosti in enako vrednost.

4. Enaka semantika anonimnih tipov

Enako()





Analizirajte rezultate:

1. Equals(): Prevajalnik preglasi Equals(), da določi, da so objekti enaki na podlagi semantike vrednosti (npr. zabeleži vrednost vsakega podatkovnega člana dveh objektov)

2. == Operatorji: Ker anonimni tipi ne preobremenjujejo ekvivalentnih operatorjev (== , !=), == primerja reference, ne vsebino.

3. GetType(): Ker če v istem asemblerju deklariramo dva enaka (z enakimi atributi) anonimna tipa, bo prevajalnik generiral definicijo le enega anonimnega tipa.

5. Anonimni tipi, ki vsebujejo anonimne tipe



Povzetek:

Pravzaprav moramo biti previdni pri uporabi anonimnih tipov, še posebej pri uporabi LINQ, in nikoli ne opustiti uporabe močno tipiziranih razredov ali struktur zaradi pojava anonimnih tipov.

Pravzaprav ima anonimni tip sam po sebi veliko omejitev:

  • Ne nadzoruješ imena anonimnega tipa
  • Anonimni tipi podedujejo System.Object
  • Anonimne vrste polj in atributov so vedno samo za branje
  • Anonimni tipi ne podpirajo dogodkov, prilagojenih metod, lastnih operatorjev in prilagojenih prepisov
  • Anonimni tipi so implicitno zapečateni
  • Ustvarjanje entitet anonimnih tipov uporablja le privzeti konstruktor


Če moramo hitro definirati obliko entitete brez definiranja njene funkcije, lahko uporabimo anonimni tip.




Prejšnji:Podatki SQL Serverja se izvozijo kot vstavljajoča skripta
Naslednji:.net/C# odraža ne-anonimne funkcije &lt;&gt;f__AnonymousType0 metode
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com