Wenn ich die Methode SqlCommand.ExecuteReader()
aufruft, sagt mir ReSharper, dass ich eine mögliche NullReference-Ausnahme habe, wenn ich das SqlDataReader-Objekt danach verwende.Wann würde SqlCommand.ExecuteReader() null zurückgeben?
Also mit dem folgenden Code:
using (SqlConnection connection = GetConnection())
{
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = ; //snip
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
//snip
}
}
}
}
Die while (reader.Read())
Linie ist unterstrichen.
Meine Frage ist, wann würde der Leser jemals null sein? Ich bin nie darauf gestoßen und die Dokumentation erwähnt nicht, dass es sein könnte. Sollte ich überprüfen, ob es null ist oder ist es sicher zu ignorieren?
Und warum sollte ReSharper denken, dass es null sein könnte, wenn ich zum Beispiel den SqlCommand verwenden kann, ohne zu empfehlen, es auf Null zu prüfen? Ich vermute, dass es ein Attribut für die ExecuteReader-Methode gibt.