Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 17968|Vastaus: 0

[Lähde] C# missä käyttöanalyysi

[Kopioi linkki]
Julkaistu 12.7.2016 11.35.43 | | |

Missä -lauseketta käytetään määrittelemään tyyppirajoitteita, jotka voivat toimia muuttujina tyyppiparametreille, jotka määritellään geneerisissä määritteissä.
1. Rajapinnan rajoitukset.
Esimerkiksi voit julistaa geneerisen luokan MyGenericClass, jolloin tyyppiparametri T voi toteuttaa IComparable-rajapinnan<T>:

public class<T> MyGenericClass missä T:IComparable { }

2. Perusluokkarajoite: Tarkoittaa, että tyypin on käytettävä määriteltyä luokkaa perusluokkana (tai itse luokkana), jotta sitä voidaan käyttää kyseisen geneerisen tyypin tyyppiparametrina.
Kun tällainen rajoite on käytetty, sen on ilmestyttävä ennen kaikkia muita parametrin tyypin rajoitteita.
luokka MyClassy<T, U>
missä T : luokka
missä U : rakenne
{
}

3.missä -lauseke voi sisältää myös konstruktorirajoitteita.
Voit käyttää uutta operaattoria luodaksesi tyyppiparametrin instanssin; Mutta tyyppiargumentin täytyy olla rajoitettu konstruktorirajoitteella new() tälle. New()-rajoite kertoo kääntäjälle, että kaikilla annetuilla argumenteilla on oltava käytettävissä oleva parametriton (tai oletus) konstruktori. Esimerkiksi:
public class <T> MyGenericClass, missä T: IComparable, new()
{
Seuraava viiva ei ole mahdollinen ilman uutta()-rajoitetta:
T item = uusi T();
}
New()-rajoite esiintyy missä -lauseen lopussa.

4. Useille tyyppiparametreille kukin tyyppiparametri käyttää missä lauseketta,
Esimerkiksi:
interface MyI { }
luokkasanakirja<TKey, TVal>
missä TKey: IComparable, IEnumerable
missä TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}

5. Voit myös liittää rajoitteita geneeristen metodien tyyppiparametreille, kuten:

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

Huomaa, että tyypin parametrirajoitteiden kuvaamisen syntaksi on sama sekä delegaateille että metodeille:

edustaja T <T>MyDelegate() missä T : new()





Yleinen missä

Generic Where voi täsmentää tyyppiparametreja. Tapoja on useita.

·missä T : struct rajoittaa, tyyppiparametrin T on perittävä System.ValueType.

·missä T: luokka rajoittaa tyyppiä Parametrin T täytyy olla viitetyyppi, eli sitä ei voi periä System.ValueType.

missä T : new() rajoittaa tyyppiparametrin T:n on oltava oletuskonstruktori

·missä T : NameOfClass rajoittaa tyyppiparametria, jonka T on perittävä luokasta tai toteuttaa rajapinta.

Nämä määritykset voidaan yhdistää, kuten: julkinen luokka Piste missä T : luokka, IComparable, new()




Edellinen:c# NHibernate-apuluokka
Seuraava:c# http kuuntelee ketjuja HttpListenerin kanssa
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com