Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 17968|Svare: 0

[Kilde] C# hvor bruksanalyse

[Kopier lenke]
Publisert på 12.07.2016 11:35:43 | | |

Where-klausulen brukes for å spesifisere typebegrensninger som kan fungere som variabler for typeparametere definert i generiske deklarasjoner.
1. Grensesnittbegrensninger.
For eksempel kan du erklære en generisk klasse MyGenericClass, slik at typeparameteren T kan implementere IComparable-grensesnittet<T>:

offentlig klasse MyGenericClass<T> hvor T:IComparable { }

2. Basisklassebegrensning: Indikerer at en type må bruke den spesifiserte klassen som baseklasse (eller selve klassen) for å brukes som typeparameter for den generiske typen.
Når en slik begrensning er brukt, må den vises før alle andre begrensninger på parametertypen.
klasse MyClassy<T, U>
hvor T : klasse
hvor U : struct
{
}

3.where-klausulen kan også inkludere konstruktørbegrensninger.
Du kan bruke den nye operatoren til å lage en instans av en typeparameter; Men typeargumentet må begrenses av konstruktørbegrensningen new() for dette. New()-begrensningen lar kompilatoren vite at enhver type argument må ha en tilgjengelig parameterløs (eller standard) konstruktør. For eksempel:
offentlig klasse MyGenericClass <T> hvor T: IComparable, new()
{
Følgende linje er ikke mulig uten new()-begrensning:
T element = ny T();
}
New()-begrensningen vises på slutten av where-klausulen.

4. For flere typeparametere bruker hver typeparameter en where-klausul,
For eksempel:
grensesnitt MyI { }
klasseordbok<TKey, TVal>
hvor TKey: IComparable, IEnumerable
hvor TVal: MyI
{
offentlig tomrom Add (TKey key, TVal val)
{
}
}

5. Du kan også knytte begrensninger til typeparametere for generiske metoder, slik som:

offentlig bool MyMethod<T>(T t) hvor T : IMyInterface { }

Merk at syntaksen for å beskrive typeparameterbegrensninger er den samme for både delegater og metoder:

delegat T MyDelegate<T>() hvor T : new()





Generisk hvor

Generisk Hvor kan kvalifisere typeparametere. Det finnes flere måter.

·hvor T : struct begrenser typeparameteren T må arve fra System.ValueType.

·hvor T: klasse begrenser typen Parameteren T må være en referansetype, det vil si at den ikke kan arves fra System.ValueType.

hvor T : new() begrenser typeparameteren T må ha en standardkonstruktør

·hvor T : NameOfClass begrenser typeparameteren T må arve fra en klasse eller implementere et grensesnitt.

Disse kvalifikatorene kan kombineres, for eksempel: offentlig klasse Punkt hvor T: klasse, IComparable, new()




Foregående:c# NHibernate hjelpeklasse
Neste:c# http lytter til tråder med HttpListener
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com