C# で文字列の値を検証する際、「null または空文字(空白含む)かどうか」のチェックは非常によく使います。この記事では、その方法とベストプラクティス、ありがちなミスについて解説します。
よく使われる3つのチェック方法
1. string.IsNullOrEmpty
このメソッドは、null または “”(空文字)を判定できます。
string input = "";
if (string.IsNullOrEmpty(input))
{
Console.WriteLine("null または空です。");
}
2. string.IsNullOrWhiteSpace
こちらは空白文字(スペースやタブ)のみの文字列も対象に含めたい場合に便利です。
string input = " ";
if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("null または空白を含む空文字です。");
}
※ IsNullOrWhiteSpace
は .NET Framework 4.0 以降で使用可能です。
3. input == null || input == ""
初心者がよく書きがちですが、非推奨の記述です。IsNullOrEmpty
を使う方が明確で安全です。
if (input == null || input == "")
{
// 可読性・保守性に劣る
}
実用例:ユーザー入力のバリデーション
public bool IsValidName(string name)
{
return !string.IsNullOrWhiteSpace(name);
}
ユーザーの入力が未入力または空白だけだった場合に false を返すような処理で役立ちます。
よくあるミス
input.Trim().Length == 0 を使ってしまう
空白を除去してから長さを調べる方法もありますが、null
チェックを忘れると例外になります。
// NG: input が null の場合に NullReferenceException が発生
if (input.Trim().Length == 0)
{
Console.WriteLine("空文字です。");
}
→ IsNullOrWhiteSpace
を使うことで、null 安全かつ読みやすく書けます。
パフォーマンスの観点では?
IsNullOrEmpty
や IsNullOrWhiteSpace
はどちらも .NET の内部で最適化されており、ほとんどの用途で高速に動作します。わざわざ自分で null チェック + Trim を組み合わせる必要はありません。
まとめ
- null や空文字の判定には
string.IsNullOrEmpty
を使う - 空白も対象にしたい場合は
string.IsNullOrWhiteSpace
を使う input == null || input == ""
のような冗長な書き方は避ける- バリデーションやユーザー入力チェックでは
IsNullOrWhiteSpace
が推奨
簡単なチェックですが、正しい方法で記述することで、バグを防ぎ、読みやすく保守しやすいコードになります。