Sollte ziemlich selbsterklärend sein, aber dies ist im Zusammenhang mit Echtzeit-XNA-Code, wo ich Zuteilungen vermeiden möchte, um GC zu vermeiden. Ich frage mich also, ob die verwalteten Typ-Objekte, die den geladenen Typen zugeordnet sind, immer in der Laufzeit vorhanden sind, oder ob typeof () tatsächlich ein neues Type-Objekt (vermutlich aus einigen nicht verwalteten Metadaten in der Laufzeitumgebung) auf dem Heap konstruiert. Das wird Müll gesammelt werden. Fühlen Sie sich frei, alle unwissenden Annahmen / Missverständnisse aufzuzeigen, die sich ergeben, wenn Sie auch diese Frage stellen =)
Nein, Typen werden zwischengespeichert, sie gibt immer dieselbe statische readonly-Instanz zurück.
Sie können dieses Beispieltestprogramm schreiben, um dies zu überprüfen:)
%Vor%Dasselbe gilt für die GetType-Methode und für jede andere Reflexionsfunktion, wie das Abrufen von Eigenschaften, Methoden, Feldern, Attributen und allem anderen.
Aus dem C # 4 Spec-Abschnitt 7.6.11:
Es gibt nur ein
System.Type
-Objekt für einen gegebenen Typ. Dies bedeutet, dass für einen TypT
,typeof(T) == typeof(T)
immer wahr ist.
(Wenn Sie den Typ über Reflektion erhalten, ruft er immer auch das gleiche Type
-Objekt ab, aber das ist nicht in der Spezifikation.)
Tags und Links c# reflection garbage-collection xna typeof