Рассмотрим эти три примера:
Пример А
string message = "Hello world!";
throw new System.Exception(message);
Пример Б
const string message = "Hello world!";
throw new System.Exception(message);
Пример С
throw new System.Exception("Hello world!");
Есть ли причина использовать один над другими? В частности, не должен ли я пытаться использовать константную строку, где это возможно (при условии, что строка никогда не изменяется), и поэтому пример B лучше всего? Что происходит в примере C?
Я думаю, я спрашиваю, идентичны ли IL, испускаемые выше, или разные, и есть ли какая-либо разница. Я понимаю, что разница будет небольшой и, вероятно, не о чем беспокоиться; Думаю, это делает этот вопрос академическим.
Редактировать. Вот ИЛ
IL_0014: ldstr "This is a string"
IL_0019: stloc.0
IL_001a: ldloc.0
IL_001b: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_0020: throw
IL_0033: nop
IL_0034: ldstr "This is a const string"
IL_0039: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_003e: throw
IL_0051: nop
IL_0052: ldstr "This is an inline string."
IL_0057: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_005c: throw
Выглядит по существу идентично мне.