Junior — Middle
Hogyan lehet korlátozni a paraméter típusát egy generikusban?
sobes.tech MI
Válasz az MI-től
C#-ban a generikusoknál a típusparaméter korlátozása a where kulcsszóval történik. Ez lehetővé teszi, hogy megadjuk, a típusparaméternek egy adott osztályból kell öröklődnie, egy interfészt kell megvalósítania, referencia vagy értéktípusnak kell lennie, paraméter nélküli konstruktorral kell rendelkeznie stb.
Példa:
// Korlátozás: T-nek egy IDisposable-t megvalósító osztálynak kell lennie, és paraméter nélküli konstruktorral kell rendelkeznie
public class MyClass<T> where T : class, IDisposable, new()
{
public T CreateInstance()
{
return new T();
}
}
Így a fordító garantálja, hogy a MyClass használatakor egy adott T típus megfelel a megadott korlátozásoknak.