Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 17968|Svar: 0

[Kilde] C# hvor brugsanalyse

[Kopier link]
Opslået på 12/07/2016 11.35.43 | | |

Where-klausulen bruges til at specificere typebegrænsninger, der kan fungere som variable for typeparametre defineret i generiske deklarationer.
1. Grænsefladebegrænsninger.
For eksempel kan du erklære en generisk klasse MyGenericClass, så typeparameteren T kan implementere IComparable-grænsefladen<T>:

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

2. Basisklassebegrænsning: Angiver at en type skal bruge den specificerede klasse som basisklasse (eller selve klassen) for at blive brugt som typeparameter for den generiske type.
Når en sådan begrænsning er brugt, skal den optræde før alle andre begrænsninger på parametertypen.
klasse MyClassy<T, U>
hvor T : klasse
hvor U : struct
{
}

3.where-klausulen kan også inkludere konstruktørbegrænsninger.
Du kan bruge den nye operator til at oprette en instans af en typeparameter; Men typeargumentet skal være begrænset af konstruktørbegrænsningen new() for dette. New()-begrænsningen lader kompilatoren vide, at enhver type argument, der gives, skal have en tilgængelig parameterløs (eller standard) konstruktør. For eksempel:
offentlig klasse MyGenericClass <T> hvor T: IComparable, new()
{
Følgende linje er ikke mulig uden new()-begrænsning:
T element = nyt T();
}
Den nye()-begrænsning vises i slutningen af where-klausulen.

4. For flere typeparametre bruger hver typeparameter en where-klausul,
For eksempel:
interface MyI { }
klasseordbog<TKey, TVal>
hvor TKey: IComparable, IEnumerable
hvor TVal: MyI
{
offentlig tomrum Add(TKey-nøgle, TVal val)
{
}
}

5. Du kan også tilføje begrænsninger til typeparametre for generiske metoder, såsom:

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

Bemærk, at syntaksen for beskrivelse af typeparameterbegrænsninger er den samme for både delegerede og metoder:

delegeret T MyDelegat(<T>) hvor T : ny()





Generisk hvor

Generisk Hvor kan kvalificere typeparametre. Der er flere måder.

·hvor T : struct begrænser den typeparameter, T skal arve fra System.ValueType.

·hvor T: klasse begrænser typen Parameteren T skal være en referencetype, det vil sige, den kan ikke arves fra System.ValueType.

hvor T : new() begrænser typeparameteren T skal have en standardkonstruktør

·hvor T : NameOfClass begrænser den typeparameter, T skal arve fra en klasse eller implementere et interface.

Disse kvalifikatorer kan kombineres, såsom: offentlig klasse Punkt hvor T : klasse, IComparable, new()




Tidligere:c# NHibernate hjælpeklasse
Næste:c# http lytter til tråde med HttpListener
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com