Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 17968|Răspunde: 0

[Sursă] C# unde analiza utilizării

[Copiază linkul]
Postat pe 12.07.2016 11:35:43 | | |

Clauza where este folosită pentru a specifica constrângeri de tip care pot servi ca variabile pentru parametrii de tip definiți în declarații generice.
1. Constrângeri de interfață.
De exemplu, poți declara o clasă generică MyGenericClass, astfel încât parametrul de tip T să poată implementa<T> interfața IComparable:

clasa publică<T> MyGenericClass unde T:IComparable { }

2. Constrângerea clasei de bază: Indică faptul că un tip trebuie să folosească clasa specificată ca clasă de bază (sau clasa în sine) pentru a fi folosit ca parametru de tip pentru acel tip generic.
Odată ce o astfel de constrângere este folosită, aceasta trebuie să apară înaintea tuturor celorlalte constrângeri privind tipul parametrului.
clasa MyClassy<T, U>
unde T : clasa
unde U : struct
{
}

Propoziția 3.where poate include și constrângeri de constructor.
Poți folosi noul operator pentru a crea o instanță a unui parametru de tip; Dar argumentul tipului trebuie să fie constrâns de constrângerea constructorului new() pentru aceasta. Constrângerea new() informează compilatorul că orice tip de argument furnizat trebuie să aibă un constructor accesibil, fără parametri (sau implicit). De exemplu:
clasa publică <T> MyGenericClass unde T: IComparable, new()
{
Următoarea linie nu este posibilă fără noua constrângere():
Elementul T = noua T();
}
Noua constrângere apare la sfârșitul clauzei where.

4. Pentru mai mulți parametri de tip, fiecare parametru de tip folosește o clauză where,
De exemplu:
interfaza MyI { }
Dicționarul clasei<TKey, TVal>
unde TKey: IComparabil, IEnumerabil
unde TVal: MyI
{
public void Adaugă (TKey key, TVal val)
{
}
}

5. De asemenea, puteți atașa constrângeri parametrilor de tip ai metodelor generice, cum ar fi:

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

Rețineți că sintaxa pentru descrierea constrângerilor parametrilor de tip este aceeași atât pentru delegați, cât și pentru metode:

delegă T <T>MyDelegate() unde T : new()





Unde generic

Generic Where poate califica parametrii de tip. Există mai multe moduri.

·unde T : struct restricționează parametrul de tip pe care T trebuie să îl moștenească de la System.ValueType.

·unde clasa T: restricționează tipul Parametrul T trebuie să fie un tip de referință, adică nu poate fi moștenit de la System.ValueType.

unde T : new() restricționează parametrul de tip T trebuie să aibă un constructor implicit

·unde T : NameOfClass restricționează parametrul de tip T trebuie să moștenească de la o clasă sau să implementeze o interfață.

Aceste calificative pot fi combinate, cum ar fi: clasă publică Punct unde T : clasă, IComparabil, nou()




Precedent:C# Clasa de ajutor NHibernate
Următor:c# http ascultă firele de discuție cu HttpListener
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com