Ich habe die folgende Codezeile:Warum kann der Null-Bedingungsoperator verwendet werden, wenn der Wert eines Bool gesetzt wird, ohne ein NULL-Bool zu verwenden?
user.Exists = await this.repository?.Exists(id);
Exists
auf der linken Seite ist eine Eigenschaft der User
Klasse. Sein Typ ist nur bool
, nicht bool?
. Die Methode Exists
auf der rechten Seite ist eine API-Methode, um zu überprüfen, ob eine bestimmte Entität im Repository vorhanden ist. Es gibt Task<bool>
zurück. Ich möchte prüfen, ob das Repository zuerst null ist, also verwende ich den bedingten Nullenoperator. Ich dachte, wenn das Repository null ist, würde die ganze rechte Seite einfach null zurückgeben, was nicht einem bool
Typ zugewiesen werden kann, aber der Compiler scheint damit in Ordnung zu sein. Fällt es einfach auf einen falschen Wert?
Versucht, diesen Code tatsächlich auszuführen? Wenn nicht, versuchen Sie es und Sie werden sehen. Oder stellen Sie sich vor, was passieren würde, wenn die Exists-Methode null statt Task – Evk
zurückgibt. Nun, 'await' könnte die Typüberprüfung wegwerfen, aber was würden Sie erwarten, wenn' repository' null ist? –