Middle
Vai ir iespējams ierobežot tipus, kurus lietotājs nodos caur šablonu C#?
sobes.tech AI
Atbilde no AI
Jā, izmantojot ģenerisko ierobežojumus (generic constraints).
public class MyGenericClass<T> where T : IMyInterface // T jāīsteno IMyInterface
{
// ...
}
public class AnotherGenericClass<T> where T : class // T jābūt atsauces tipam
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T jābūt vērtības tipam
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Apvienotie ierobežojumi
{
// ...
}
Ierobežojumu veidi:
where T : struct: Tips jābūt vērtības tipam (nav nullable).where T : class: Tips jābūt atsauces tipam.where T : new(): Tips jābūt publiskam bezparametru konstruktoram. Šo ierobežojumu nevar izmantot kopā arstructunclass.where T : BaseClass: Tips jāmanto noBaseClassvai jābūt pašamBaseClass.where T : IInterface: Tips jāīsteno arIInterfaceinterfeisu.where T : U: TipsTjābūt vai jāmanto noU, kurUir cits tipa parametrs.
Var kombinēt vairākus ierobežojumus, tos atdalot ar komatu. Ierobežojumi uz bāzes klasi vai interfeisu jānorāda pirmajiem.