Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 17968|Odpoveď: 0

[Zdroj] C# kde analýza použitia

[Kopírovať odkaz]
Zverejnené 12. 7. 2016 11:35:43 | | |

Klauzula where sa používa na špecifikáciu typových obmedzení, ktoré môžu slúžiť ako premenné pre typové parametre definované v generických deklaráciách.
1. Obmedzenia rozhrania.
Napríklad môžete deklarovať generickú triedu MyGenericClass, aby typový parameter T mohol implementovať IComparable<T> rozhranie:

public class MyGenericClass<T>, kde T:IComparable { }

2. Obmedzenie základnej triedy: Označuje, že typ musí použiť špecifikovanú triedu ako základnú triedu (alebo samotnú triedu), ktorá má byť použitá ako parameter typu pre daný generický typ.
Keď sa takéto obmedzenie použije, musí sa objaviť pred všetkými ostatnými obmedzeniami na typ parametra.
trieda MyClassy<T, U>
kde T : trieda
kde U : štruktúra
{
}

Klauzula 3.kde môže tiež obsahovať obmedzenia konštruktora.
Nový operátor môžete použiť na vytvorenie inštancie typového parametra; Ale typ argument musí byť obmedzený konštruktorovým obmedzením new() pre toto. Obmedzenie new() dáva kompilátorovi vedieť, že akýkoľvek typ argumentu musí mať prístupný konštruktor bez parametrov (alebo predvolený). Napríklad:
public class MyGenericClass <T> , kde T: IComparable, new()
{
Nasledujúci riadok nie je možný bez obmedzenia new():
T položka = nová T();
}
Obmedzenie new() sa objavuje na konci klauzuly where.

4. Pre viaceré typové parametre každý typový parameter používa klauzulu where,
Napríklad:
interface MyI { }
triedny slovník<TKey, TVal>
kde TKey: Porovnateľné, IEnumerovateľné
kde TVal: MyI
{
verejná prázdnota Pridať (TKey kľúč, TVal val)
{
}
}

5. Môžete tiež priradiť obmedzenia k typovým parametrom generických metód, napríklad:

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

Upozorňujeme, že syntax na popis obmedzení typových parametrov je rovnaká pre delegátov aj metódy:

delegate T MyDelegate<T>(), kde T : new()





Generické kde

Generický Kde môže kvalifikovať typové parametre. Existuje niekoľko spôsobov.

·kde T : štruktúra obmedzuje typový parameter T musí zdediť zo System.ValueType.

·kde T: trieda obmedzuje typ Parameter T musí byť referenčný typ, teda nemôže byť zdedený zo System.ValueType.

kde T : new() obmedzuje typový parameter T, ktorý musí mať predvolený konštruktor

·kde T : NameOfClass obmedzuje typový parameter, ktorý musí T zdediť z triedy alebo implementovať rozhranie.

Tieto kvalifikátory možno kombinovať, napríklad: public class Point where T : class, IComparable, new()




Predchádzajúci:c# Kurz pomoci NHibernate
Budúci:c# http počúva vlákna pomocou HttpListener
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com