See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 17968|Vastuse: 0

[Allikas] C#, kus kasutusanalüüs

[Kopeeri link]
Postitatud 12.07.2016 11:35:43 | | |

Kus klauslit kasutatakse tüübipiirangute määramiseks, mis võivad toimida muutujatena tüüpiparameetrite jaoks, mis on määratletud üldistes deklaratsioonides.
1. Liidese piirangud.
Näiteks saate deklareerida üldise klassi MyGenericClass, nii et tüübiparameeter T saab teostada IComparable<T> liidese:

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

2. Baasklassi piirang: Näitab, et tüüp peab kasutama määratud klassi baasklassina (või klassi ennast), et seda kasutada selle üldise tüübi tüübiparameetrina.
Kui sellist piirangut on kasutatud, peab see ilmuma enne kõiki teisi parameetri tüübi piiranguid.
klass MyClassy<T, U>
kus T : klass
kus U : struktuur
{
}

3.kus klausel võib sisaldada ka konstruktorpiiranguid.
Uue operaatoriga saab luua tüübiparameetri eksemplari; Kuid tüübiargument peab olema piiratud konstruktori piiranguga new(). New() piirang annab kompilaatorile teada, et iga pakutava argumendi tüüp peab omama ligipääsetavat parameetrita (või vaikimisi) konstruktorit. Näiteks:
public class <T> MyGenericClass, kus T: IComparable, new()
{
Järgmine joon ei ole võimalik ilma new() piiranguta:
T ese = uus T();
}
Uus() piirang ilmub kus klausli lõpus.

4. Mitme tüübiparameetri korral kasutab iga tüübiparameeter klauslit, kus
Näiteks:
interface MyI { }
klassi sõnastik<TKey, TVal>
kus TKey: IComparable, IEnumerable
kus TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}

5. Üldiste meetodite tüübiparameetritele saab lisada ka piiranguid, näiteks:

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

Pane tähele, et tüübiparameetrite piirangute kirjeldamise süntaks on sama nii delegaatide kui ka meetodite puhul:

delegaat T <T>MyDelegate() kus T : new()





Üldine Kus

Üldine Kus võib täpsustada tüübiparameetreid. On mitu võimalust.

·kus T : struct piirab tüübi parameetrit, mille T peab pärima System.ValueType.

·kus T: klass piirab tüüpi Parameetrit T peab olema viitetüüp, st seda ei saa pärida System.ValueType'ist.

kus T : new() piirab tüübiparameetrit T peab omama vaikimisi konstruktorit

·kus T : NameOfClass piirab tüübiparameetrit, mille T peab klassist pärima või liidese rakendama.

Neid kvalifikatsioone saab kombineerida, näiteks: avalik klass Punkt kus T : klass, IComparable, new()




Eelmine:c# NHibernate abiklass
Järgmine:c# http kuulab HttpListeneri teemasid
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com