Mam następujący wiersz kodu:Dlaczego można użyć operatora warunkowego o wartości zerowej podczas ustawiania wartości parametru bool bez użycia parametru zerującego?
user.Exists = await this.repository?.Exists(id);
Exists
na lewej stronie jest własnością klasy User
. Jego typ to tylko bool
, a nie bool?
. Metoda Exists
po prawej stronie jest metodą interfejsu API służącą do sprawdzania, czy dany obiekt istnieje w repozytorium. Zwraca Task<bool>
. Chcę sprawdzić, czy repozytorium ma wartość zerową, więc używam operatora warunkowego null. Pomyślałem, że jeśli repozytorium ma wartość NULL, wówczas cała prawa strona po prostu zwróci wartość null, której nie można przypisać do typu bool
, ale kompilator wydaje się być z nią w porządku. Czy po prostu domyślnie jest to wartość fałszywa?
Próbowałeś uruchomić ten kod? Jeśli nie, spróbuj, a zobaczysz. Albo wyobraź sobie, co by się stało, gdyby metoda Exists zwróciła null zamiast Task – Evk
. Cóż, 'await' może zrzucić sprawdzanie typu, ale czego oczekiwałbyś wyniku, gdyby' repozytorium 'miało wartość null? –