Middle
C# da shablon orqali foydalanuvchi o'tkazadigan turlarni cheklash mumkinmi?
sobes.tech AI
AIdan javob
Ha, umumiy turlar cheklovlari (generic constraints) dan foydalanib.
public class MyGenericClass<T> where T : IMyInterface // T, IMyInterface ni amalga oshirishi kerak
{
// ...
}
public class AnotherGenericClass<T> where T : class // T, referens tur bo'lishi kerak
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T, qiymat turi bo'lishi kerak
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Kombinatsiyalashgan cheklovlar
{
// ...
}
Cheklov turlari:
where T : struct: Turi qiymat turi bo'lishi kerak (null bo'lmasligi kerak).where T : class: Turi referens tur bo'lishi kerak.where T : new(): T, jamoat bo'sh konstruktoriga ega bo'lishi kerak. Bu cheklovstructvaclassbilan birga ishlatilmaydi.where T : BaseClass: TuriBaseClassdan meros olishi yokiBaseClassbo'lishi kerak.where T : IInterface: TuriIInterfaceinterfeysini amalga oshirishi kerak.where T : U: T,Ubo'lishi yoki undan meros olishi kerak, bu yerdaUboshqa tur parametridir.
Bir nechta cheklovlarni vergul bilan ajratib birlashtirish mumkin. Asosiy sinf yoki interfeys cheklovlari birinchi bo'lishi kerak.