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: Ο τύπος πρέπει να υλοποιεί το interfaceIInterface.where T : U: Ο τύποςTπρέπει να είναι ή να κληρονομεί από τοU, όπου τοUείναι άλλος παράμετρος τύπου.
Μπορούν να συνδυαστούν πολλοί περιορισμοί διαχωρισμένοι με κόμμα. Οι περιορισμοί στην βασική κλάση ή το interface πρέπει να δηλώνονται πρώτοι.