Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 17968|Risposta: 0

[Fonte] C# dove l'analisi dell'uso

[Copiato link]
Pubblicato su 12/07/2016 11:35:43 | | |

La clausola where viene utilizzata per specificare vincoli di tipo che possono servire come variabili per parametri di tipo definiti in dichiarazioni generiche.
1. Vincoli di interfaccia.
Ad esempio, puoi dichiarare una classe generica MyGenericClass, così che il parametro di tipo T possa implementare<T> l'interfaccia IComparable:

classe pubblica<T> MyGenericClass dove T:IComparable { }

2. Vincolo della classe base: Indica che un tipo deve usare la classe specificata come classe base (o la classe stessa) da usare come parametro di tipo per quel tipo generico.
Una volta usato tale vincolo, deve comparire prima di tutti gli altri vincoli sul tipo di parametro.
classe MyClassy<T, U>
dove T : classe
dove U : struct
{
}

La clausola 3.where può anche includere vincoli del costruttore.
Puoi usare il nuovo operatore per creare un'istanza di un parametro di tipo; Ma l'argomento di tipo deve essere vincolato dal vincolo del costruttore new() per questo. Il vincolo new() informa il compilatore che qualsiasi tipo di argomento fornito deve avere un costruttore accessibile senza parametro (o predefinito). Per esempio:
classe pubblica <T> MyGenericClass dove T: IComparable, new()
{
La seguente riga non è possibile senza un nuovo vincolo:
Elemento T = nuovo T();
}
Il vincolo new() appare alla fine della clausola where.

4. Per più parametri di tipo, ogni parametro di tipo utilizza una clausola where,
Per esempio:
interface MyI { }
Dizionario della classe<TKey, TVal>
dove TKey: Comparabile, IEnumerable
dove TVal: MyI
{
Public void Aggiunge (chiave TKey, TVal val)
{
}
}

5. Puoi anche aggiungere vincoli ai parametri di tipo di metodi generici, come:

public bool <T>MyMethod(T t) dove T : IMyInterface { }

Si noti che la sintassi per descrivere i vincoli dei parametri di tipo è la stessa sia per i delegati che per i metodi:

delegare T <T>MyDelegate() dove T : new()





Generico dove

Il generico Where può qualificare i parametri di tipo. Ci sono diversi modi.

·dove T : struct limita il parametro di tipo che T deve ereditare da System.ValueType.

·dove T: classe limita il tipo Il parametro T deve essere un tipo di riferimento, cioè non può essere ereditato da System.ValueType.

dove T : new() limita il parametro di tipo T deve avere un costruttore predefinito

·dove T : NameOfClass limita il parametro di tipo T deve ereditare da una classe o implementare un'interfaccia.

Questi qualificatori possono essere combinati, come: classe pubblica Punto dove T : classe, IComparable, new()




Precedente:Classe di aiuto c# NHibernate
Prossimo:c# http ascolta i thread con HttpListener
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com