Strings and ints, implicit and explicit
c#, explicit, implicit, int, string
Solution
When concatenating the compiler turns the statement `"ham" + 4` into a call to `String.Concat`, which takes two `object` parameters, so the value `4` is boxed and then `ToString` is called on that.
For the assignment there is no implicit conversion from `int` to `string`, and thus you cannot assign `4` to a `string` without explicitly converting it.
In other words the two assignments are handled very differently by the compiler, despite the fact that they look very similar in C#.
Problem
Had a coworker ask me this, and in my brain befuddled state I didn't have an answer: Why is it that you can do: ``` string ham = "ham " + 4; ``` But not: ``` string ham = 4; ``` If there's an implicit cast/operation for string conversion when you are concatenating, why not the same when assigning it as a string? (Without doing some operator overloading, of course)