Sobes.tech
Middle

C# да шаблон аркылуу пайдаланучу өткөрө турган түрлөрдү чектөөгө болобу?

sobes.tech AI

AIден жооп

ооба, жалпы түрлөрдүн чектөөлөрүн (generic constraints) колдонуу менен.

public class MyGenericClass<T> where T : IMyInterface // T, IMyInterfaceти ишке ашырышы керек
{
    // ...
}

public class AnotherGenericClass<T> where T : class // T, шилтемелүү түр болушу керек
{
    // ...
}

public class YetAnotherGenericClass<T> where T : struct // T, маанилүү түр болушу керек
{
    // ...
}

public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Көптөгөн чектөөлөр
{
    // ...
}

Чектөөлөрдүн түрлөрү:

  • where T : struct: Түр маанилүү түр болушу керек (nullable эмес).
  • where T : class: Түр шилтемелүү түр болушу керек.
  • where T : new(): Түр коомдук параметрсиз куруучу менен болушу керек. Бул чектөө struct жана class менен бирге колдонулбайт.
  • where T : BaseClass: Түр BaseClassтен мурас алган же BaseClass өзү болушу керек.
  • where T : IInterface: Түр IInterface интерфейсин ишке ашырышы керек.
  • where T : U: Түр U болушу керек же ага мурас болушу керек, анда U башка түр параметри.

Көптөгөн чектөөлөрдү үтүкчөлөр менен бөлүп бириктирсе болот. Базалык класс же интерфейс үчүн чектөөлөр биринчи көрсөтүлүшү керек.