Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#21

AW: Boxing und Unboxing in C#

  Alt 26. Aug 2011, 06:20
So Sachen wie eben "12.ToString()" ließen sich ja umschiffen, ohne da wirklich etwas zu instanziren. Wenn man mal davon absieht, dass die Methode ja eh wie schon erwähnt etwas anders implementiert ist.
Danke dir für die Details!
12.ToString() braucht keine Box.
ValueTypes sind per definition sealed. Das heißt, wenn du sowas in deinem Code stehen hast, kein .callvirt nötig sein.
Allerdings würde der JIT in keinem Fall tatsächlich einen klassischen Method lookup machen, der bei virtuellen calls eigentlich nötig wäre, da er weiß, dass 12 sealed ist. Und wennet nich virtuell zugeht, braucht man für den call selbst keine Box.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat