126 Stimmen

Wie führt man ToString für ein möglicherweise null-Objekt aus?

Gibt es einen einfachen Weg, um das Folgende zu tun:

String s = myObj == null ? "" : myObj.ToString();

Ich weiß, dass ich Folgendes tun kann, aber ich betrachte es wirklich als Hack:

String s = "" + myObj;

Es wäre großartig, wenn Convert.ToString() eine ordentliche Überladung dafür hätte.

3 Stimmen

Ich sehe nichts falsch am ersten. Wenn du den zweiten als Hack betrachtest, ist es am besten, einfach eine Hilfsfunktion zu schreiben, die die Nullprüfung durchführt.

0 Stimmen

Bitte sei genauer mit deiner Frage.

3 Stimmen

String.Format("{0}", myObj) akzeptiert Nullwerte.

1voto

jp2code Punkte 25327

Die Antwort von Holstebroe wäre wahrscheinlich die beste Antwort:

string s = string.Format("{0}", myObj);

Wenn myObj null ist, setzt Format einen leeren String-Wert dort ein.

Es erfüllt auch Ihre Anforderung nach einer Zeile und ist einfach zu lesen.

0 Stimmen

Ja, aber der Code ist nicht klar. Wie viele Ihrer Kollegen Entwickler werden wissen, was Sie erreichen möchten?

0voto

Sascha Punkte 1200

Auch wenn dies eine alte Frage ist und der Fragesteller nach C# gefragt hat, möchte ich eine VB.Net-Lösung für diejenigen teilen, die lieber mit VB.Net als mit C# arbeiten:

Dim myObj As Object = Nothing
Dim s As String = If(myObj, "").ToString()

myObj = 42
s = If(myObj, "").ToString()

Leider erlaubt VB.Net den ?-Operator nach einer Variablen nicht, sodass myObj?.ToString nicht gültig ist (zumindest nicht in .Net 4.5, das ich zum Testen der Lösung verwendet habe). Stattdessen verwende ich das If, um im Falle von myObj Nothing einen leeren String zurückzugeben. Daher gibt der erste ToString-Aufruf einen leeren String zurück, während der zweite (wo myObj nicht Nothing ist) "42" zurückgibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X