I have a statement where a string is assigned in the following manner:
for (int i = 0; i < x; i++)
{
Foo.MyStringProperty = "Bar_" + i.ToString();
/* ... */
}
Are there any performance differences between i.ToString()
or just plain i
, as both are just converted to the (culture invariant?) string equivalent?
I am well aware of the existence of String.Concat()
, String.Format
, StringBuilder
, etc., but for the sake of this case, lets assume I may only use +
concatenation.
Thanks in advance.
+
concatenation uses String.Concat
anyway - String
itself doesn't expose a + operator.
So for example:
int i = 10;
string x = "hello" + i;
is compiled into:
int i = 10;
object o1 = "hello";
object o2 = i; // Note boxing
string x = string.Concat(o1, o2);
Whereas calling ToString
directly will avoid boxing and call the Concat(string, string)
overload. Therefore the version with the ToString
call will be slightly more efficient - but I highly doubt that it'll be significant, and I'd strongly urge you to go with whichever version you feel is more readable.
Just using string + object
forces a call to ToString() on the object - it's equivalent to calling it explicitly.
ToString is the default method used to write an object. So, if you use "i" or "i.ToString()" is the same thing.
If you know a little about operator overloading in c++ you can understand how "+" works in this case.
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;
public class MainClass
{
public static void Main()
{
int number = 10;
string msg = "age is " + number + ".";
msg += " great?";
Console.WriteLine("msg: {0}", msg);
String s1 = 10 + 5 + ": Two plus three is " + 2 + 3;
String s2 = 10 + 5 + ": Two plus three is " + (2 + 3);
Console.WriteLine("s1: {0}", s1);
Console.WriteLine("s2: {0}", s2); }
}
Result: msg: age is 10. great?
s1: 15: Two plus three is 23
s2: 15: Two plus three is 5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With