6 Stimmen

C# - kurze Prüfung auf Null

Wie kann ich den folgenden Code ersetzen

if (customer.Person!=null)
 Console.WriteLine(customer.Person.Name);

mit etwas wie diesem

Console.WriteLine(customer.Person.Name?? "unknown");

11voto

Jon Skeet Punkte 1325502

Sie können nicht, ich fürchte - es gibt nichts wie Groovy's null-safe dereferencing Operator :(

Ich nehme an, Sie könnten ein "Null-Objekt" für Person erstellen - d. h. eine echte Instanz, aber mit allen Eigenschaften Null. Dann könnten Sie verwenden:

Console.WriteLine((customer.Person ?? Person.Null).Name ?? "Unknown");

... aber das ist ziemlich furchtbar. (Es wird auch nicht geprüft, ob customer null ist).

Eine andere Möglichkeit wäre, eine Erweiterungsmethode für Person zu schreiben:

public static string NameOrDefault(this Person person, string defaultName)
{
    return person == null ? defaultName : person.Name ?? defaultName;
}

Dann:

Console.WriteLine(customer.Person.NameOrDefault("Unknown");

5voto

HuBeZa Punkte 4599

Sie könnten die ternärer Operator :

Console.WriteLine(customer.Person != null ? customer.Person.Name : "unknown");

Nicht der schönste Code, aber immerhin ein Einzeiler.


Bearbeiten: Vergessen Sie nicht, die Option IsNullOrWhiteSpace für den Fall, dass Ihre Anwendungslogik leere und ungültige Zeichenfolgen gleichbehandelt.

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