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სხვა ტიპის პარამეტრია.
შეგიძლიათ რამდენიმე შეზღუდვა ერთდროულად გამოიყენოთ მძიმით გამიჯნული. ბაზის კლასი ან ინტერფეისი შეზღუდვები პირველ ადგილზე უნდა იყოს მითითებული.