Junior — Middle
Existují nějaká omezení při definování vlastního univerzálního šablony (generického)?
sobes.tech AI
Odpověď od AI
Při definování vlastních univerzálních šablon (generics) v C# existují určité omezení:
- Typy parametrů musí být odkazy, hodnotové typy nebo mít určité omezení (constraints), například dědit od určité třídy, implementovat rozhraní, mít konstruktor bez parametrů.
- Nelze přímo používat primitivní typy bez omezení, pokud je požadována specifická funkčnost.
- Nelze vytvářet instance typu parametru bez omezení new(), protože kompilátor neví, jak jej inicializovat.
- Nelze používat operátory typeof(T) nebo is T bez omezení.
Příklad omezení:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Zde T musí implementovat rozhraní IEntity a mít konstruktor bez parametrů.