Middle
Kann man die Typen einschränken, die der Benutzer über eine Vorlage in C# übermitteln wird?
sobes.tech KI
Antwort von AI
Ja, unter Verwendung von generischen Einschränkungen (generic constraints).
public class MyGenericClass<T> where T : IMyInterface // T muss IMyInterface implementieren
{
// ...
}
public class AnotherGenericClass<T> where T : class // T muss ein Referenztyp sein
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T muss ein Wertetyp sein
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Kombinierte Einschränkungen
{
// ...
}
Arten von Einschränkungen:
where T : struct: Der Typ muss ein Wertetyp sein (nicht nullable).where T : class: Der Typ muss ein Referenztyp sein.where T : new(): Der Typ muss einen öffentlichen parameterlosen Konstruktor haben. Diese Einschränkung kann nicht gleichzeitig mitstructundclassverwendet werden.where T : BaseClass: Der Typ muss vonBaseClasserben oderBaseClassselbst sein.where T : IInterface: Der Typ muss die SchnittstelleIInterfaceimplementieren.where T : U: Der TypTmussUsein oder vonUerben, wobeiUein anderer generischer Parameter ist.
Mehrere Einschränkungen können durch Kommas getrennt kombiniert werden. Einschränkungen für die Basisklasse oder Schnittstelle müssen zuerst angegeben werden.