Wyjątek "Converting null literal or possible null value to non-nullable type"

0

Dzień dobry.
jak rozwiązać problem z komunikatem:

Warning	CS8600	Converting null literal or possible null value to non-nullable type

Oto mój kod:

public async Task<List<Uzytkownicy>> CheckPasswordOfUser(int id)
{
    List<Uzytkownicy> dane = new List<Uzytkownicy>();
    var response = await _httpClient.GetAsync("http://localhost:5000/baza/users/checkpassword/"+id);
    var json = await response.Content.ReadAsStringAsync();
    if (json != null)
    {
        dane = JsonConvert.DeserializeObject<List<Uzytkownicy>>(json);
    }
    return dane;
}

Aktualizacja:
Komunikat dotyczy linijki:

dane = JsonConvert.DeserializeObject<List<Uzytkownicy>>(json);
4

Metoda DeserializeObject może zwrócić NULL, a twój typ List<Uzytkownicy> nie wskazuje na to aby tam mógł się znajdować NULL.

Aby zaznaczyć że może tam być NULL powinieneś mu ustawić typ List<Uzytkownicy>?, co będzie oznaczać że dane będzie przyjmować NULLa lub dodać ! za JsonConvert.DeserializeObject<List<Uzytkownicy>>(json)

czyli JsonConvert.DeserializeObject<List<Uzytkownicy>>(json)! jeżeli masz pewność że NULL nigdy tam nie będzie zwrócony.

Jest to "kosmetyczny" zabieg, bardziej jako wskazówki dla analyzera, bo do List<Uzytkownicy> tak naprawdę można aktualnie wpisać NULL.

Cała ta dziwność wynika z tego że to "współczesne" podejście do pozbycia się NULLi z kodu jest ciężkie w kontekście migracji całego ekosystemu, a więc bawimy się w "wskazówki", zamiast twardo zablokować możliwość wpisania NULLi, co spowodowałoby że pewnie nic by się nie skompilowało bez włożenia roku? 2? 5? w przepisanie większości istniejącego kodu

1 użytkowników online, w tym zalogowanych: 0, gości: 1