Was bedeutet in C # where T : class
?
Dh.
public IList<T> DoThis<T>() where T : class
Einfach ausgedrückt bedeutet dies, dass der generische Parameter auf eine Klasse beschränkt wird (oder genauer gesagt auf einen Referenztyp, der eine Klasse, eine Schnittstelle, ein Delegat oder ein Array-Typ sein kann).
Weitere Informationen finden Sie in diesem MSDN-Artikel .
Es ist eine generische Typeinschränkung . In diesem Fall bedeutet dies, dass der generische Typ
T
ein Referenztyp sein muss (Klasse, Schnittstelle, Delegat oder Array-Typ).quelle
Dies ist eine Typbeschränkung
T
, die angibt, dass es sich um eine Klasse handeln muss.Die
where
Klausel kann verwendet werden, um andere Typeinschränkungen anzugeben, z.Weitere Informationen finden Sie auf der MSDN-Seite zur
where
Klausel oder unter allgemeinen Parametereinschränkungen .quelle
where T : class, IComparable, new()
Das beschränkt sich
T
auf Referenztypen . Sie können dort keine Werttypen (struct
außer s und primitiven Typenstring
) einfügen.quelle
Dies bedeutet, dass der Typ, der
T
bei Verwendung der generischen Methode verwendet wird, eine Klasse sein muss - dh es kann keine Struktur oder eingebaute Zahl wieint
oder seindouble
quelle
where T: class
bedeutet wörtlich dasT has to be a class
. Es kann ein beliebiger Referenztyp sein. Wenn ein Code IhreDoThis<T>()
Methode aufruft , muss er eine Klasse bereitstellen, um T zu ersetzen . Wenn ich zum Beispiel IhreDoThis<T>()
Methode aufrufen würde, müsste ich sie wie folgt aufrufen:Wenn Ihre Methode wie folgt aussieht:
Wo immer T in Ihrer Methode erscheint, wird es durch MyClass ersetzt. Die endgültige Methode, die der Compiler aufruft, sieht also wie folgt aus:
quelle
new T()
ist nicht möglich mitwhere T : class
. Sie müssen angebenwhere T: new()
, um dies tun zu dürfen.Es wird als Typparametereinschränkung bezeichnet. Tatsächlich schränkt es ein, welcher Typ T sein kann.
Einschränkungen bei Typparametern (C # -Programmierhandbuch)
quelle
T stellt einen Objekttyp von dar. Dies bedeutet, dass Sie einen beliebigen Typ von angeben können. IList: wenn IList s = neuer IList; Jetzt s.add ("String immer akzeptieren.").
quelle
Hier bezieht sich T auf eine Klasse. Es kann ein Referenztyp sein.
quelle
'T' steht für einen generischen Typ. Dies bedeutet, dass jede Art von Klasse akzeptiert werden kann. Der folgende Artikel könnte helfen:
quelle