String concatenation with or without .ToString()?

.net, .net-3.5, c#

Solution

`+` 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.

Problem

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.

Original source