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է այլ տիպային պարամետր:
Կարող եք միաժամանակ մի քանի սահմանափակումներ օգտագործել ստորակետով բաժանելով։ Հիմնական դասը կամ ինտերֆեյսը պետք է նշվեն առաջինը։