Рассмотрим эти три примера:
Пример а
string message = "Hello world!";
throw new System.Exception(message);
Пример б
const string message = "Hello world!";
throw new System.Exception(message);
Пример c
throw new System.Exception("Hello world!");
Есть ли причины использовать один над другими? В частности, не должен ли я пытаться использовать Const String там, где это возможно (при условии, что строка никогда не модифицирована), и поэтому пример B является лучшим? Что происходит в примере C?
Я думаю, что я спрашиваю, является ли IL, излучаемым вышеупомянутым, идентичны или отличаются, и если есть какая -то разница. Я признаю, что разница будет маленькой и, вероятно, не о чем беспокоиться; Я думаю, что это делает этот академический вопрос.
Редактировать. Вот 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
Выглядит существенно идентично мне.