Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 31087|Odpoveď: 0

[Zdroj] C# Anonymný typový učebný denník

[Kopírovať odkaz]
Zverejnené 16. 10. 2020 17:41:04 | | | |
Keď nechceme definovať komplexné triedy ako komplexné metódy, udalosti a konštruktory, môžeme dynamicky generovať vlastný dátový typ -> anonymný typ.

1. Definovať typ anonymity

Pri definovaní anonymného typu musíte použiť kľúčové slovo var a inicializačnú syntax objektu.

var: Kompilátor automaticky generuje novú definíciu triedy pri kompilácii (názov triedy nevidíme v C# kóde).

Inicializácia: Kompilátoru povie, aby vytvoril súkromné pozadie a (len na čítanie) vlastnosti pre novo vytvorený typ.

Konštruujte anonymný typ odovzdaním parametrov a vytlačením relevantných informácií



Call: Anonymné typy môžu byť tiež vytvorené pomocou hardkódu



2. Interná reprezentácia anonymných typov

Všetky anonymné typy automaticky dedia z objektu, takže môžeme použiť ToString, GetHashCode, Equals na objekte auta, skúsme to nazvať:



Hovory a výsledky:







Typ objektu auta je: <>f__AnonymousType03 (tvoj môže byť iný), anonymný typ je cítený kompilátorom, nemôžeme zasahovať, CIL kód.

3. Implementácia metód ToString() a GetHashCode().

1.ToString()



2. GetHashCode()

Používa premennú každého anonymného typu na výpočet hash hodnoty ako vstupu typu System.Collections.Generic.EqualityComparer a <T>rovnakú hashovaciu hodnotu vytvára len vtedy, ak majú oba anonymné typy rovnaké vlastnosti a priradená im je rovnaká hodnota.

4. Rovnaká sémantika anonymných typov

Equals()





Analyzujte výsledky:

1. Equals(): Kompilátor prepíše Equals(), aby určil, že objekty sú rovnaké na základe sémantiky hodnôt (napr. zaznamenáva hodnotu každého dátového člena dvoch objektov)

2. == Operátory: Pretože anonymné typy nepreťažujú ekvivalentné operátory (== , !=), == porovnáva referencie, nie obsah.

3. GetType(): Pretože ak deklarujeme dva identické (s rovnakými atribútmi) anonymné typy v tej istej zostave, kompilátor vygeneruje len definíciu jedného anonymného typu.

5. Anonymné typy, ktoré obsahujú anonymné typy



Súhrn:

V skutočnosti by sme mali byť opatrní pri používaní anonymných typov, najmä pri používaní LINQ, a nikdy by sme nemali prestať používať silne typované triedy alebo štruktúry kvôli vzniku anonymných typov.

V skutočnosti má samotný anonymný typ mnoho obmedzení:

  • Neovládate meno anonymného typu
  • Anonymné typy zdedia System.Object
  • Anonymné typy polí a atribútov sú vždy len na čítanie
  • Anonymné typy nepodporujú udalosti, vlastné metódy, vlastné operátory a vlastné prepisy
  • Anonymné typy sú implicitne zapečatené
  • Vytváranie entít anonymných typov používa iba predvolený konštruktor


Ak potrebujeme rýchlo definovať tvar entity bez definovania jej funkcie, môžeme použiť anonymný typ.




Predchádzajúci:Dáta SQL Serveru sa exportujú ako insert skript
Budúci:.net/C# odráža neanonymné funkcie &lt;&gt;f__AnonymousType0 metódy
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com