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башка түр параметри.
Көптөгөн чектөөлөрдү үтүкчөлөр менен бөлүп бириктирсе болот. Базалык класс же интерфейс үчүн чектөөлөр биринчи көрсөтүлүшү керек.