If a field allows nulls, don’t use regular primitive types. Use the C# nullable
type and the as
keyword.
int? field_a = reader["field_a"] as int?;
string field_b = reader["field_a"] as string;
Adding a ?
to any non-nullable C# type makes it “nullable”. Using the as
keyword will attempt to cast an object to the specified type. If the cast fails (like it would if the type is DBNull
), then the operator returns null
.
Note: Another small benefit of using as
is that it is slightly faster than normal casting. Since it can also have some downsides, such as making it harder to track bugs if you try to cast as the wrong type, this shouldn’t be considered a reason for always using as
over traditional casting. Regular casting is already a fairly cheap operation.