Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 17968|Válasz: 0

[Forrás] C#, ahol használati elemzés

[Linket másol]
Közzétéve 2016. 07. 12. 11:35:43 | | |

A where záradék olyan típuskorlátok meghatározására szolgál, amelyek változóként szolgálhatnak általános deklarációban definiált típusparaméterekhez.
1. Interfész korlátai.
Például deklarálhatunk egy generikus MyGenericClass osztályt, így a típusparaméter T megvalósíthatja az IComparable<T> interfészt:

public class<T> MyGenericClass where T:IComparable { }

2. Alap osztálykorlátozás: Azt jelzi, hogy egy típusnak a megadott osztályt kell használnia alap osztályként (vagy magát az osztályt), hogy az adott általános típus típusparaméterként használható legyen.
Ha ilyen korlátozást alkalmaznak, annak minden más paramétertípusra vonatkozó korlátozás előtt kell megjelennie.
osztály MyClassy<T, U>
ahol T : osztály
ahol U : struct
{
}

A 3.where klauzula tartalmazhat konstruktor korlátokat is.
Az új operátorral létrehozhatsz egy típusparaméter példányát; De a típusargumentumot ehhez a new() konstruktor feltétele korlátozza. Az új() korlátozás jelzi a fordítónak, hogy bármely típusú argumentusnak elérhető paraméter nélküli (vagy alapértelmezett) konstruktorral kell rendelkeznie. Például:
public class <T> MyGenericClass, ahol T: IComparable, new()
{
A következő vonal nem lehetséges új() korlátozás nélkül:
T tétel = új T();
}
Az új() korlátozás a hol mellékmondat végén jelenik meg.

4. Több típusparaméter esetén minden típusparaméter egy ahol klauzulatot használ,
Például:
interface MyI { }
osztály szótár<TKey, TVal>
ahol TKey: IComparable, IEnumerable
ahol TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}

5. Általános metódusok típusparamétereihez is hozzáadhatsz korlátozásokat, például:

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

Megjegyzendő, hogy a típusparaméter-korlátok leírásának szintaxisa ugyanaz mind a delegáltak, mind a metódusok esetében:

delegált T <T>MyDelegate(), ahol T : new()





Általános hol

A generic Where típusparamétereket is minősíthet. Több módja is van.

·ahol T : struct korlátozza a típusparamétert, amelynek T-nek örökölnie kell a System.ValueType-tól.

·ahol T: osztály korlátozza a típust T paraméternek referenciatípusnak kell lennie, vagyis nem örökölhető a System.ValueType típustól.

ahol T : new() korlátozza a típusparamétert, T-nek alapértelmezett konstruktorral kell rendelkeznie

·ahol T : NameOfClass korlátozza azt a típusparamétert, amelyet T-nek örökölnie kell egy osztályból vagy interfészt kell megvalósítania.

Ezek a kvalifikátorok kombinálhatók, például: public class Pont, ahol T : class, IComparable, new()




Előző:c# NHibernate help class
Következő:c# http Threadeket hallgat a HttpListenerrel
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com