C # generice

0 Comments

Generic înseamnă forma generală, nu specifică. În c#, generic înseamnă nu specifice pentru un anumit tip de date.

C # vă permite să definiți clase generice, interfețe, clase abstracte,câmpuri, metode, metode statice, proprietăți, evenimente, delegați și operatori folosind parametrul type și fără tipul de date specific. Un parametru de tip este un substituent pentru un anumit tip specificat la crearea unei instanțe de tip generic.

Un tip generic este declarat prin specificarea unui parametru de tip într-o paranteză unghiulară după un nume de tip, de ex., TypeName<T> unde T este un parametru de tip.

clasa generică

clasele generice sunt definite folosind un parametru de tip între paranteze unghiulare după numele clasei. Următoarele definește o clasă generică.

Exemplu: Definim o Clasă Generică

mai Sus, DataStore este o clasă generică., T este numit parametru de tip, care poate fi folosit ca un tip de câmpuri, proprietăți, metode parametri, tipuri de returnare, și delegați în DataStore clasa. De exemplu, Data este generic proprietate, deoarece am folosit un parametru de tip T ca tip, în loc să specifice tipul de date.

notă
nu este necesar să utilizați T ca parametru de tip. Puteți da orice nume unui parametru de tip., În general, T este utilizat atunci când există un singur parametru de tip. Este recomandat să utilizați o mai ușor de citit tip parametru numele ca pe cerința ca TSession, TKey, TValue etc. Aflați mai multe despre instrucțiunile de denumire a parametrilor de tip

de asemenea, puteți defini mai mulți parametri de tip separați prin virgulă.

instanțierea clasei generice

puteți crea o instanță de clase generice specificând un tip real în paranteze unghiulare., Următoarele creează o instanță a clasei generice DataStore.

de mai Sus, am specificat string tip în paranteze unghiulare în timp ce crearea unui exemplu. Deci, T va fi înlocuit cu un string tastează T este folosit în întreaga clasă la compilare. Prin urmare, tipul de proprietate Data ar fi un string. figura de mai jos ilustrează modul în care funcționează generice.,

puteți atribui o valoare șir la Data proprietate. Încercarea de a atribui alte valori decât string va duce la o eroare de compilare.

puteți specifica diferitele tipuri de date pentru diferite obiecte, după cum se arată mai jos.

publicitate

caracteristicile clasei generice

  • o clasă generică crește reutilizarea. Mai mulți parametri de tip înseamnă mai reutilizabile devine., Cu toate acestea, prea multă generalizare face ca Codul să fie dificil de înțeles și de menținut.
  • o clasă generică poate fi o clasă de bază pentru alte clase generice sau non-generice sau clase abstracte.
  • o clasă generică poate fi derivată din alte interfețe generice sau non-generice, clase sau clase abstracte.

câmpuri generice

o clasă generică poate include câmpuri generice. Cu toate acestea, nu poate fi inițializat.

exemplu: câmp Generic

următoarele declară o matrice generică.,

exemplu: matrice generică

metode generice

o metodă declarată cu parametrii de tip pentru tipul sau parametrii de întoarcere se numește metodă generică.

mai Sus, AddorUpdate() și GetData() metode sunt metode generice. Datele reale tip de item parametru vor fi specificate în momentul de instantierea DataStore<T> clasă, așa cum se arată mai jos.,

tipul de parametru generic poate fi utilizat cu mai mulți parametri cu sau fără parametri non-generici și tip de retur. Următoarele sunt valabile supraîncărcarea metodei generice.

o clasă non-generică poate include metode generice specificând un parametru de tip între paranteze unghiulare cu numele metodei, așa cum se arată mai jos.

avantajele generice

  1. generice crește reutilizarea codului. Nu trebuie să scrieți cod pentru a gestiona diferite tipuri de date.
  2. genericele sunt sigure de tip., Obțineți erori de timp de compilare dacă încercați să utilizați un tip de date diferit de cel specificat în definiție.
  3. Generic are un avantaj de performanță, deoarece elimină posibilitățile de box și unboxing.


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *