Sobes.tech
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.