C # Generics (Italiano)
Generico indica la forma generale, non specifica. In C#, generico significa non specifico per un particolare tipo di dati.
C # consente di definire classi generiche, interfacce, classi astratte,campi, metodi, metodi statici, proprietà, eventi, delegati e operatori utilizzando il parametro type e senza il tipo di dati specifico. Un parametro type è un segnaposto per un particolare tipo specificato durante la creazione di un’istanza del tipo generico.
Un tipo generico viene dichiarato specificando un parametro di tipo tra parentesi angolari dopo un nome di tipo, ad esempio, TypeName<T>
doveT
è un parametro di tipo.
Classe generica
Le classi generiche sono definite utilizzando un parametro di tipo tra parentesi angolari dopo il nome della classe. Quanto segue definisce una classe generica.
Sopra, il DataStore
è una classe generica., T
è chiamato parametro type, che può essere utilizzato come tipo di campi, proprietà, parametri del metodo, tipi di ritorno e delegati nella classeDataStore
. Ad esempio, Data
è una proprietà generica perché abbiamo usato un parametro di tipo T
come tipo invece del tipo di dati specifico.
T
come parametro di tipo. Puoi dare qualsiasi nome a un parametro di tipo., Generalmente, T
viene utilizzato quando esiste un solo parametro di tipo. Si consiglia di utilizzare un nome di parametro di tipo più leggibile secondo il requisito come TSession
, TKey
, TValue
ecc. Ulteriori informazioni sulle linee guida per la denominazione dei parametri di tipo È inoltre possibile definire più parametri di tipo separati da una virgola.
Istanziare la classe generica
È possibile creare un’istanza di classi generiche specificando un tipo effettivo tra parentesi angolari., Quanto segue crea un’istanza della classe genericaDataStore
.
Sopra, abbiamo specificato il string
digitare le parentesi angolari durante la creazione di un’istanza. Quindi, T
verrà sostituito con un string
digitare dove T
viene utilizzato nell’intera classe in fase di compilazione. Pertanto, il tipo di proprietà Data
sarebbe un string
.
La figura seguente illustra come funzionano i generici.,
È possibile assegnare un valore stringa alla proprietàData
. Il tentativo di assegnare valori diversi dalla stringa comporterà un errore in fase di compilazione.
È possibile specificare i diversi tipi di dati per diversi oggetti, come mostrato di seguito.
Caratteristiche della classe generica
- Una classe generica aumenta la riutilizzabilità. Più parametri di tipo significano che diventa più riutilizzabile., Tuttavia, troppa generalizzazione rende il codice difficile da capire e mantenere.
- Una classe generica può essere una classe base per altre classi generiche o non generiche o classi astratte.
- Una classe generica può essere derivata da altre interfacce, classi o classi astratte generiche o non generiche.
Campi generici
Una classe generica può includere campi generici. Tuttavia, non può essere inizializzato.
Quanto segue dichiara un array generico.,
Metodi generici
Un metodo dichiarato con i parametri di tipo per il suo tipo o parametri di ritorno è chiamato metodo generico.
Sopra, i metodiAddorUpdate()
eGetData()
sono metodi generici. Il tipo di dati effettivo del parametro item
verrà specificato al momento dell’istanziazione della classe DataStore<T>
, come mostrato di seguito.,
Il tipo di parametro generico può essere utilizzato con più parametri con o senza parametri non generici e tipo di ritorno. I seguenti sono validi metodo generico overloading.
Una classe non generica può includere metodi generici specificando un parametro type tra parentesi angolari con il nome del metodo, come mostrato di seguito.
Vantaggi dei generici
- I generici aumentano la riusabilità del codice. Non è necessario scrivere codice per gestire diversi tipi di dati.
- I generici sono sicuri per il tipo., Si ottengono errori in fase di compilazione se si tenta di utilizzare un tipo di dati diverso da quello specificato nella definizione.
- Generico ha un vantaggio di prestazioni perché rimuove le possibilità di boxe e unboxing.