null is one of two things:
- a reference that doesn't actually point to an object - just a "nothing" indicator (essentially, it is the value
0 as a reference)
- a
Nullable<T> struct, which does not currently have a value (the HasValue property will also return false)
DBNull is specific to some parts of ADO.NET to represent null in the database. I have yet to think of a good reason why they didn't just use regular null here.
"" is a string literal with length zero - a perfectly valid, but empty, string. The significance of this is that between null string and a "" string, instance methods like value.Trim() will behave differently; null.Trim() will throw an exception; "".Trim() is just "". In general, using string.IsNullOrEmpty(value) as a test makes this distinction go away.