Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 31087|Atbildi: 0

[Avots] C# anonīma tipa mācību dienasgrāmata

[Kopēt saiti]
Publicēts 16.10.2020 17:41:04 | | | |
Ja mēs nevēlamies definēt sarežģītas klases, piemēram, sarežģītas metodes, notikumus un konstruktorus, mēs varam dinamiski ģenerēt pielāgotu datu tipu -> anonīmu tipu.

1. Definējiet anonimitātes veidu

Definējot anonīmu tipu, jāizmanto var atslēgvārds un objekta inicializācijas sintakse.

var: Kompilators automātiski ģenerē jaunu klases definīciju kompilācijas laikā (mēs nevaram redzēt klases nosaukumu C# kodā).

Inicializācija: Tas liks kompilatoram izveidot privātus fona laukus un (tikai lasāmus) rekvizītus jaunizveidotajam tipam.

Izveidojiet anonīmu tipu, nododot parametrus un izdrukājiet attiecīgo informāciju



Zvans: anonīmus tipus var veidot arī, izmantojot cieto kodu



2. Anonīmu tipu iekšējā pārstāvība

Visi anonīmie veidi automātiski pārmanto no objekta, tāpēc mēs varam izmantot ToString, GetHashCode, Equals uz automašīnas objekta, mēģināsim to izsaukt:



Uzaicinājumi un rezultāti:







Automašīnas objekta veids ir: <>f__AnonymousType03 (jūsu var būt atšķirīgs), anonīmā tipa nosaukumu jūt kompilators, mēs nevaram iejaukties, CIL kods.

3. ToString() un GetHashCode() metožu ieviešana.

1.ToString()



2.GetHashCode()

Tas izmanto katra anonīma tipa mainīgo, lai aprēķinātu jaucējvērtību kā System.Collections.Generic.EqualityComparer tipa ievadi, un <T>rada to pašu jaucējvērtību tikai tad, ja abiem anonīmajiem tipiem ir vienādi rekvizīti un tiem tiek piešķirta vienāda vērtība.

4. Anonīmu tipu vienāda semantika

Vienāds()





Analizējiet rezultātus:

1. Equals(): kompilators ignorē Equals(), lai noteiktu, ka objekti ir vienādi, pamatojoties uz vērtību semantiku (piemēram, atzīmē divu objektu katra datu elementa vērtību)

2. == Operatori: Tā kā anonīmie tipi nepārslogo ekvivalentus operatorus (== , !=), == salīdzina atsauces, nevis saturu.

3. GetType(): Jo, ja mēs deklarējam divus identiskus (ar vienādiem atribūtiem) anonīmus tipus vienā montāžā, kompilators ģenerēs tikai viena anonīma tipa definīciju.

5. Anonīmi tipi, kas satur anonīmus tipus



Kopsavilkuma:

Patiesībā mums vajadzētu būt piesardzīgiem, izmantojot anonīmus tipus, it īpaši, ja izmantojat LINQ, un nekad neatsakāmies no stipri tipētu klašu vai struktūru izmantošanas anonīmu tipu parādīšanās dēļ.

Patiesībā anonīmajam tipam ir daudz ierobežojumu:

  • Jūs nekontrolējat anonīmā tipa nosaukumu
  • Anonīmi tipi pārmanto System.Object
  • Anonīmi lauku un atribūtu tipi vienmēr ir tikai lasāmi
  • Anonīmi tipi neatbalsta notikumus, pielāgotas metodes, pielāgotus operatorus un pielāgotas pārrakstīšanas
  • Anonīmi veidi ir netieši aizzīmogoti
  • Anonīmu tipu entītiju izveidei tiek izmantots tikai noklusējuma konstruktors


Ja mums ir nepieciešams ātri definēt vienības formu, nedefinējot tās funkciju, mēs varam izmantot anonīmo tipu.




Iepriekšējo:SQL Server dati tiek eksportēti kā ievietošanas skripts
Nākamo:.net/C# atspoguļo neanonīmas funkcijas &lt;&gt;f__AnonymousType0 metodes
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com