есть подозрение что таки разница будет ибо учитывая иммутабельность строк и факт что это ссылочный тип (В шарпах по крайней мере) в данном случае в первом примере переменной будет присвоена ссылка на значение в памяти одной стринги, во втором же он создаст в памяти одну стрингу, вторую и лишь затем создаст третью в которой запишет значение после конкатенации и на которую и будет ссылаться переменная уже. Собственно класс stringBuilder для того что бы избежать подобных проблем и существует
Не будет. Где-то это уже обсуждалось. Можно погуглить. Stringbuilder в байткоде будет задействован в случае string a = "hello" + myVar + "world", если myVar не константа. В случаях же, a = 1+3 или a = "hello "+ "world" конкатенация автоматом происходит на уровне компиляции.
И даже локальные переменные, если они не меняются в одном scope, или константы (private static final) заменяются напрямую цифрами, без использования ссылок и стеков.
Поэтому опытные программисты и говорят - не занимайтесь микрооптимизацией. Занимайтесь написанием понятного кода. Во-первых, при нынешних скоростях - микрооптимизация это ерунда. Кроме того, всю микрооптимизацию за вас сделает сам компилятор. В принципе, это одна из причин, что C# и Java считаются высокоуровневыми языками.