Sobes.tech
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 интерфейсин ишке ашырышы жана параметрсиз куруучу болушу керек.