Sobes.tech
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 met struct en class worden gebruikt.
  • where T : BaseClass: Het type moet erven van BaseClass of zelf BaseClass zijn.
  • where T : IInterface: Het type moet de interface IInterface implementeren.
  • where T : U: Het type T moet of U zijn of ervan erven, waarbij U een 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.