Middle
Kun je de types beperken die een gebruiker via een sjabloon in C# zal doorgeven?
sobes.tech AI
Antwoord van AI
Ja, door gebruik te maken van generieke beperkingen (generic constraints).
public class MyGenericClass<T> where T : IMyInterface // T moet IMyInterface implementeren
{
// ...
}
public class AnotherGenericClass<T> where T : class // T moet een referentietype zijn
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T moet een waarde type zijn
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Gecombineerde beperkingen
{
// ...
}
Soorten beperkingen:
where T : struct: Het type moet een waarde type zijn (niet nullable).where T : class: Het type moet een referentietype zijn.where T : new(): Het type moet een publieke parameterloze constructor hebben. Deze beperking kan niet gelijktijdig metstructenclassworden gebruikt.where T : BaseClass: Het type moet erven vanBaseClassof zelfBaseClasszijn.where T : IInterface: Het type moet de interfaceIInterfaceimplementeren.where T : U: Het typeTmoet ofUzijn of ervan erven, waarbijUeen andere typeparameter is.
Meerdere beperkingen kunnen worden gecombineerd door ze te scheiden met een komma. Beperkingen op de basisklasse of interface moeten eerst worden aangegeven.