Junior — Middle
Zijn er beperkingen bij het definiëren van je eigen universele sjabloon (generiek)?
sobes.tech AI
Antwoord van AI
Bij het definiëren van eigen universele sjablonen (generics) in C# zijn er enkele beperkingen:
- De typeparameters moeten referentie-, waarde- of bepaalde beperkingen (constraints) hebben, bijvoorbeeld erven van een bepaalde klasse, een interface implementeren, een parameterloze constructor hebben.
- Het is niet mogelijk om primitieve types direct zonder beperkingen te gebruiken als er specifieke functionaliteit vereist is.
- Het is niet mogelijk om instanties van het type parameter te maken zonder de beperking new(), omdat de compiler niet weet hoe het te initialiseren.
- Het is niet mogelijk om de operators typeof(T) of is T zonder beperkingen te gebruiken.
Voorbeeld van beperking:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Hier moet T de interface IEntity implementeren en een parameterloze constructor hebben.