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: НавъTбояд ёUбошад ё аз он мерос гирад, ки дар онUдигар параметри навъ мебошад.
Мумкин аст чанд маҳдудиятро бо ҳам дар як ҷумлаи ягонаи ҷудошудаи бо ҳарфҳои вом истифода бурд. Маҳдудиятҳо дар асосӣ ё интерфейс бояд аввал нишон дода шаванд.