Um Verwirrung zu vermeiden, ist es besser, diese beiden Beispiele von Ihnen als schreiben:
Class(Of T)
Class(Of T as OtherClass)
Class(Of T)
bezeichnet einen generic Class
, die jede Art für T
annehmen kann.
Es ist legal, es als Class(Of String)
zu instanziiert, Class(Of Integer)
usw.
Class(Of T as OtherClass)
bezeichnet eine generische Class
mit einem constraint. Es kann nur Typen akzeptieren, die die Bedingung erfüllen (von einem bestimmten Typ erben, eine bestimmte Schnittstelle implementieren, einen öffentlichen parameterlosen Konstruktor haben, Referenztypen/Werttypen sind).
Ich finde es auch ein bisschen seltsam, dass Sie mit letzterem vertraut sind, aber nicht ersteren. Das unbeschränkte Class(Of T)
ist viel häufiger. Wenn dies nicht Ihre Erfahrung ist, könnte dies bedeuten, dass Sie Generika verwenden, bei denen Sie die Vererbung verwenden sollten.
Eigentlich nicht ... Ich habe die Frage aktualisiert, um ihre Bedeutung zu verdeutlichen, ich wollte in generischen Begriffen verstehen, was der Unterschied zwischen solchen Klassen zu erklären ist. Warum ist Activator.CreateInstance beteiligt? – UsuarioBeta
Vergiss es. Ich habs. Ich war wegen meiner schlechten Wortwahl verwirrt, da Type auch der Name einer bestehenden .NET-Klasse ist. Können Sie Ihre Antwort so bearbeiten, dass sie stattdessen OtherClass verwendet? – UsuarioBeta
@UsuarioBeta Ich änderte die Antwort, sehen Sie können Sie jetzt verstehen .. = P – Henrique