Heim >Backend-Entwicklung >C++ >Können Werttypen in C# mit Null verglichen werden?
Obwohl in C# allgemein davon ausgegangen wird, dass Werttypen (z. B. Ganzzahlen) nicht null sein können, können sie tatsächlich mit Nullwerten verglichen werden. Dieses Verhalten kann für Entwickler verwirrend sein, wie im folgenden Codeausschnitt gezeigt:
<code class="language-csharp">Int32 x = 1; if (x == null) { Console.WriteLine("What the?"); }</code>
Dieser Code widerspricht unserer Erwartung, dass x nicht null sein kann, da null ein nicht gesetztes Wertobjekt darstellt. Der Compiler gibt jedoch keinen Fehler aus, weshalb wir die Gültigkeit dieses Vergleichs in Frage stellen.
Die Erklärung liegt in der einzigartigen Art und Weise, wie Operatoren in C# aufgelöst werden. In diesem Fall identifiziert der Compiler zwei möglicherweise anwendbare Überladungen des ==-Operators:
x und null sind beide implizit in nullfähige Ganzzahlen konvertierbar (Nullable
Dieses Verhalten steht im Einklang mit Mustern, die den Vergleich von Werttypen mit anderen primitiven Typen ermöglichen. Beispielsweise führt der Vergleich x == 12,6 (wobei x eine Ganzzahl ist) auch immer zu „falsch“, da die Ganzzahl x implizit in eine Gleitkommazahl mit doppelter Genauigkeit konvertierbar ist und der Vergleich zwischen zwei Gleitkommazahlen mit doppelter Genauigkeit erfolgt .
Das obige ist der detaillierte Inhalt vonKönnen Werttypen in C# mit Null verglichen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!