Was ist der Zweck von new () während der Deklaration der BaseEntityCollection-Klasse?
Wenn ich es entfernen werde, habe ich einen Fehler mit der folgenden Nachricht erhalten: "T muss ein nicht-abstrakter Typ mit einem öffentlichen parameterlosen Konstruktor sein, um ihn als Parameter zu verwenden ..."
Das Schreiben von new()
erzwingt, dass der Parameter einen Standardkonstruktor hat.
Ohne es können Sie new T()
nicht schreiben.
Ihr Fehler tritt auf, wenn Sie versuchen, einen nicht new()
Typ als new()
'd Parameter zu übergeben.
Außerdem erben Sie nicht List<T>
.
Stattdessen sollten Sie Collection<T>
erben, das für die Vererbung vorgesehen ist.
Dies ist die Notation für die generische Einschränkung : Sie muss einen (öffentlichen) parameterlosen Konstruktor haben.
Dies bedeutet, dass Ihr generischer Typ einen parameterlosen Konstruktor haben muss.
%Vor%Ich bin mir nicht sicher, was Sie hier tun, aber ich denke, es ist gegen Liskovs Regel. Überprüfen Sie Ihre Hierarchie.
Dies ist eine der möglichen generischen Einschränkungen, die Sie Ihrem generischen Typ zuordnen können. Wenn Sie die Integritätsbedingung "new ()" verwenden, können Sie nur einen generischen Typ verwenden, wenn dieser über einen parameterlosen Konstruktor verfügt. Dies kann für Dinge wie Serialisierung oder Factory-Typ-Methoden nützlich sein, wo Sie ein Objekt vom Typ T erstellen müssen.
Hier sind einige weitere allgemeine Einschränkungen: Ссылка
Es ist eine generische Einschränkung. In diesem Fall handelt es sich um eine neue Einschränkung .