両方を「キャッチ」する便利な方法があります
if (String.IsNullOrEmpty(Master.SharedInfo)) {
...
}
null
と""
等しくありません。null
文字列がまったくないことを意味します。""
長さの文字列です0
。
string s = null;
int i = s.Length; // <-- Throws null reference exception
だが
string s = "";
int i = s.Length; // OK, i => 0
""
とString.Empty
は同等です。String.Empty
の代わりに常に使用する必要があると言う人もいます""
が、実際には違いはありません。
アップデート
等しい文字列定数はコンパイラによってインターンされます。つまり、コンパイラは等しい定数を1回だけ格納します。(@BobToddのコメントに応じて)簡単なテストを行うことができます。
string s = "";
Console.WriteLine(Object.ReferenceEquals(s, "")); // --> true
Console.WriteLine(Object.ReferenceEquals(s, String.Empty)); // --> true
完全を期すために(@JoelEthertonのコメントによる)。.NET Framework 4.0以降、テストできます
if (String.IsNullOrWhitespace(Master.SharedInfo)) {
...
}
" "
これは、またはのような文字列もキャッチ"\t"
します。