Middle
Lze omezit typy, které uživatel bude předávat přes šablonu v C#?
sobes.tech AI
Odpověď od AI
Ano, použitím obecných omezení (generic constraints).
public class MyGenericClass<T> where T : IMyInterface // T musí implementovat IMyInterface
{
// ...
}
public class AnotherGenericClass<T> where T : class // T musí být referenční typ
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T musí být hodnotový typ
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Kombinovaná omezení
{
// ...
}
Typy omezení:
where T : struct: Typ musí být hodnotový typ (ne nullable).where T : class: Typ musí být referenční typ.where T : new(): Typ musí mít veřejný bezparametrický konstruktor. Toto omezení nelze použít současně sstructaclass.where T : BaseClass: Typ musí dědit odBaseClassnebo býtBaseClasssám.where T : IInterface: Typ musí implementovat rozhraníIInterface.where T : U: TypTmusí být nebo dědit odU, kdeUje jiný parametr typu.
Lze kombinovat více omezení oddělených čárkou. Omezení na základní třídu nebo rozhraní musí být uvedena jako první.