IsNullOrEmpty with Object
a null string is null, an empty string is ""
isNullOrEmpty requires an intimate understanding about the implementation of a string. If you want one, you can write one yourself for your object, but you have to make your own definition for whether your object is "empty" or not.
ask yourself: What does it mean for an object to be empty?
The following code is perfectly fine and the right way (most exact, concise, and clear) to check if an object is null
:
object obj = null;
//...
if (obj == null)
{
// Do something
}
String.IsNullOrEmpty
is a method existing for convenience so that you don't have to write the comparison code yourself:
private bool IsNullOrEmpty(string input)
{
return input == null || input == string.Empty;
}
Additionally, there is a String.IsNullOrWhiteSpace
method checking for null
and whitespace characters, such as spaces, tabs etc.
obj1 != null
is the right way.
String defines IsNullOrEmpty
as a nicer way to say
obj1 == null || obj == String.Empty
so it does more than just check for nullity.
There may be other classes that define a method to check for a sematically "blank or null" object, but that would depend on the semantics of the class, and is by no means universal.
It's also possible to create extension method to do this kind of thing if it helps the readability of your code. For example, a similar approach to collections:
public static bool IsNullOrEmpty (this ICollection collection)
{
return collection == null || collection.Count == 0;
}
I found that DataGridViewTextBox
values and some JSON objects don't equal Null but instead are "{}"
values. Comparing them to Null doesn't work but using these do the trick:
if (cell.Value is System.DBNull)
if (cell.Value == System.DBNull.Value)
A good excerpt I found concerning the difference between Null and DBNull:
Do not confuse the notion of null in an object-oriented programming language with a DBNull object. In an object-oriented programming language, null means the absence of a reference to an object. DBNull represents an uninitialized variant or nonexistent database column.
You can learn more about the DBNull class here.