Вы всегда получите "SomethingElse". Это связано с тем, что ConstantB зависит от ConstantA.
Вы можете даже переключать линии, и вы получите тот же результат. Компилятор знает, что ConstantB зависит от ConstantA и будет обрабатывать его соответственно, даже если вы напишете его в частичных классах.
Чтобы быть абсолютно уверенным, вы можете запустить VS Command Prompt и вызвать ILDASM. Там вы можете увидеть фактический скомпилированный код.
Кроме того, если вы попытаетесь сделать следующее, вы получите ошибку компиляции:
private const string ConstantB = ConstantA + "Else";
private const string ConstantA = "Something" + ConstantB;
Ошибка: Оценку постоянного значения для «ConsoleApplication2.Program.ConstantB» включает в себя круговое определение Этот вид доказывает, что компилятор знает свои зависимости.
Добавлено: Spec Ссылка указал Jon Skeet:
This is explicitly mentioned in section 10.4 of the C# 3 spec: Constants are permitted to depend on other constants within the same program as long as the dependencies are not of a circular nature. The compiler automatically arranges to evaluate the constant declarations in the appropriate order.
@Svish, пожалуйста, смотрите комментарии Джона Скита на его ответ –
@ Натан, спасибо, что не заметил этого: р – Svish