Search code examples
c#dbnull

is DBNull vs. DBNull.Value.Equals()


I am curious what are the pros and cons of using if(some_value is DBNull) versus if(DBNull.Value.Equals(some_value)). Personally i prefer if(some_value is DBNull) because i find it more readable. I know Microsoft recommends using if(DBNull.Value.Equals(some_value)) according to https://msdn.microsoft.com/en-us/library/system.dbnull%28v=vs.110%29.aspx.


Solution

  • I would go for the DBNull.Value.Equals way.

    Why?

    Beacuse is will check the type against equality. It has to look up the left hand type and match that against the right hand type which it also has to look up. After that it can compare the types, most likely by checking for reference equality.

    That would be less efficient than just checking reference equality, which DBNull.Value.Equals does. Since there is just once instance of DBNull.Value, this check is very accurate and very fast.