Junior — Middle
Өзүнүн универсалдуу үлгүсүн (генерик) аныктоодо чектөөлөр барбы?
sobes.tech AI
AIден жооп
C# тилинде өзүнүн универсалдуу үлгүлөрүн (generics) аныктоодо айрым чектөөлөр бар:
- Параметр түрлөрү шилтемелер, маанилүү түрлөр же белгилүү чектөөлөр (constraints) болушу керек, мисалы, белгилүү бир классынан мурас алуу, интерфейсти ишке ашыруу, параметрсиз куруучу болушу.
- Эгер атайын функционалдык талап кылынса, чектөөлөрсүз түз primitive түрлөрүн колдонуу мүмкүн эмес.
- new() чектөөсүз параметр түрүнүн үлгүсүн түзүү мүмкүн эмес, анткени компилятор аны кандай баштоо керектигин билбейт.
- typeof(T) же is T операторлорун чектөөлөрсүз колдонуу мүмкүн эмес.
Чектөө мисалы:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Бул жерде T, IEntity интерфейсин ишке ашырышы жана параметрсиз куруучу болушу керек.