Weird Operator Vorrang mit? (Null-Koaleszenzoperator)

or kurzem hatte ich einen seltsamen Fehler, bei dem ich eine Zeichenfolge mit einem @ verkettet habint? und anschließend eine weitere Zeichenfolge hinzufügen.

Mein Code war im Grunde das Äquivalent dazu:

int? x=10;
string s = "foo" + x ?? 0 + "bar";

Erstaunlicherweise wird dies ohne Warnungen oder inkompatible Typfehler ausgeführt und kompiliert.

int? x=10;
string s = "foo" + x ?? "0" + "bar";

Und dann führt dies zu einem unerwarteten Typinkompatibilitätsfehler:

int? x=10;
string s = "foo" + x ?? 0 + 12;

As wird dieses einfachere Beispiel:

int? x=10;
string s = "foo" + x ?? 0;

Kann mir jemand erklären, wie das funktioniert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage