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");
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");
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");
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 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.