Umiddelbart vil jeg tro at .ToString() er hurtigst, i det der ved casting først undersøges om objektet har det ønskede interface. Hvilket må antages at være langsommere end at slå op efter en funktion.
Derudover synes jeg også at casting for at få streng-repræsentationen er en dårlig løsning, idet det antyder at int er en specialisering af string. Det eneste de har til fælles er at de begge er objekter.
Jeg ville tro at det er compileren der undersøger om objektet har det ønskede interface, hvilket derfor ikke gør casting langsommere når først koden er compilet. Hvis der er forskel må det være ganske få millisekunder... hvad med at undersøge det i praksis - lav 10.000 castings og 10.000 .ToString() og se hvad der er hurtigst... selvom caching nok vil gøre resultatet lidt usikkert...
For det første vil jeg give Kichian ret i, at casting er en dårlig løsning da det antyder sammenhæng mellem Int32 typen og String typen hvilket der ikke er. For det andet vil jeg også mene at ToString er hurtigst. Int32 er en value type og hvis den skal castes skal den først boxes og boxing er relativt dyrt.
Boxing sker automatisk hvis systemet skal bruge en reference til en value type. Value types er (som du sikkert ved) allokeret på den lokale stack, hvorimod reference types er allokeret på heapen. Hvis det bliver nødvendigt at behandle en value type som en reference type, som f.eks. hvis man skal kalde en metode på den, så bliver der oprettet en instans på heapen og de korrekte data bliver kopieret og referencen er dermed skabt!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.