Sie erhalten „somethingelse“ immer. Dies liegt daran, dass ConstantB von ConstantA abhängt.
Sie können sogar die Leitungen wechseln, und Sie erhalten das gleiche Ergebnis. Der Compiler weiß, dass ConstantB von ConstantA abhängt und es entsprechend behandelt, auch wenn Sie es in Teilklassen schreiben.
Um ganz sicher zu sein, können Sie VS Eingabeaufforderung ausführen und ILDASM aufrufen. Dort können Sie den tatsächlich kompilierten Code sehen.
Außerdem, wenn Sie versuchen, das zu tun, folgende Sie einen Compiler-Fehler erhalten werden:
private const string ConstantB = ConstantA + "Else";
private const string ConstantA = "Something" + ConstantB;
Fehler: Die Auswertung des konstanten Wert für ‚ConsoleApplication2.Program.ConstantB‘ beinhaltet eine zirkuläre Definition Diese Art von beweist, dass der Compiler seine Abhängigkeiten kennt.
Hinzugefügt: Spec Referenz von Jon Skeet wies darauf hin:
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, bitte Jon Skeet Kommentar zu seiner Antwort –
@Nathan sehen, danke, hatte dies nicht bemerkt: p – Svish