C#のIsNullOrEmptyとは?null・空文字判定の使い方と注意点

1. C#のIsNullOrEmptyとは?

1-1. IsNullOrEmptyの役割

IsNullOrEmptyは、指定した文字列が次のどちらかに該当するかを調べるためのメソッドです。

  • nullである

  • 長さが0の空文字""である

文字列がどちらかの状態であればtrue、通常の文字列であればfalseを返します。

たとえば、次の2つの条件式は同じ意味です。

value == null || value == ""
string.IsNullOrEmpty(value)

IsNullOrEmptyを使ったほうが目的を一目で理解しやすく、条件式も簡潔になります。

1-2. nullと空文字を判定できるメソッド

C#におけるnullと空文字は、どちらも「有効な文字が入っていない状態」として扱われることがありますが、厳密には異なる値です。

string? value1 = null;string value2 = "";

value1は文字列オブジェクトを参照していません。一方、value2は文字数が0の文字列オブジェクトです。

string.IsNullOrEmptyを使うと、この違いを意識せずに両方をまとめて判定できます。

Console.WriteLine(string.IsNullOrEmpty(value1)); // TrueConsole.WriteLine(string.IsNullOrEmpty(value2)); // True

1-3. 戻り値はtrue/false

IsNullOrEmptyの戻り値はbool型です。

対象の文字列戻り値
nulltrue
""true
" "false
"C#"false

trueは、対象がnullまたは空文字であることを表します。falseは、1文字以上の文字が含まれていることを表します。

否定演算子!を付けると、「文字列が設定されているか」を判定できます。

if (!string.IsNullOrEmpty(value)){Console.WriteLine("文字列が設定されています。");}

1-4. 使用できる型と基本構文

基本構文は次のとおりです。

string.IsNullOrEmpty(判定する文字列)

使用例は次のようになります。

string? name = null;

bool result = string.IsNullOrEmpty(name);

IsNullOrEmptystringクラスの静的メソッドです。そのため、変数から呼び出すのではなく、string.IsNullOrEmptyという形式で使用します。

// 正しい書き方bool result = string.IsNullOrEmpty(name);

配列やList<T>など、文字列以外の型には直接使用できません。

2. null・空文字・空白文字の違い

2-1. nullとは何か

nullは、変数がオブジェクトを参照していない状態を表します。

string? message = null;

この状態で、LengthTrimなどのインスタンスメンバーを直接呼び出すと、NullReferenceExceptionが発生します。

string? message = null;

// NullReferenceExceptionが発生するConsole.WriteLine(message.Length);

string.IsNullOrEmptyは、引数がnullでも安全に呼び出せます。

string? message = null;

bool result = string.IsNullOrEmpty(message);

Console.WriteLine(result); // True

2-2. 空文字""とは何か

空文字とは、文字数が0の文字列です。ダブルクォーテーションを2つ並べて表します。

string message = "";

空文字はnullではありません。文字列オブジェクトは存在していますが、その中に文字が1つも入っていない状態です。

string message = "";

Console.WriteLine(message == null); // FalseConsole.WriteLine(message.Length); // 0

string.Emptyを使用しても、空文字を表せます。

string message = string.Empty;

""string.Emptyの値は同じです。

2-3. 空白文字" "とは何か

空白文字は、スペースやタブ、改行などの文字が含まれている文字列です。

string value1 = " ";string value2 = " ";string value3 = "\t";string value4 = "\n";

半角スペース" "は1文字の文字列であるため、空文字ではありません。

string value = " ";

Console.WriteLine(value.Length); // 1

見た目では何も入力されていないように見えても、文字列としては値が存在します。

2-4. IsNullOrEmptyで判定できるもの・できないもの

string.IsNullOrEmptytrueになるのは、nullと空文字だけです。

Console.WriteLine(string.IsNullOrEmpty(null));   // TrueConsole.WriteLine(string.IsNullOrEmpty(""));     // TrueConsole.WriteLine(string.IsNullOrEmpty(" "));    // FalseConsole.WriteLine(string.IsNullOrEmpty(" "));   // FalseConsole.WriteLine(string.IsNullOrEmpty("\t"));   // FalseConsole.WriteLine(string.IsNullOrEmpty("C#"));   // False

空白だけの文字列も未入力として扱いたい場合は、string.IsNullOrWhiteSpaceを使用します。

3. IsNullOrEmptyの基本的な使い方

3-1. string.IsNullOrEmptyの書き方

string.IsNullOrEmptyには、判定したい文字列を引数として渡します。

string? value = "C#";

bool result = string.IsNullOrEmpty(value);

Console.WriteLine(result); // False

結果を変数に代入せず、if文の条件式に直接記述することもできます。

if (string.IsNullOrEmpty(value)){Console.WriteLine("文字列が未設定です。");}

3-2. nullの場合の判定例

文字列がnullの場合、IsNullOrEmptytrueを返します。

string? value = null;

bool result = string.IsNullOrEmpty(value);

Console.WriteLine(result); // True

引数にnullを渡しても例外は発生しません。

3-3. 空文字の場合の判定例

文字列が空文字の場合も、trueを返します。

string value = "";

bool result = string.IsNullOrEmpty(value);

Console.WriteLine(result); // True

string.Emptyを使用した場合も結果は同じです。

string value = string.Empty;

Console.WriteLine(string.IsNullOrEmpty(value)); // True

3-4. 通常の文字列の場合の判定例

1文字以上の文字が含まれていれば、falseを返します。

string value = "Hello";

bool result = string.IsNullOrEmpty(value);

Console.WriteLine(result); // False

数字や記号を文字列として格納した場合も、空文字ではありません。

Console.WriteLine(string.IsNullOrEmpty("0")); // FalseConsole.WriteLine(string.IsNullOrEmpty("-")); // False

3-5. if文での実践的な使い方

未入力の場合と入力済みの場合で処理を分ける例です。

string? userName = GetUserName();

if (string.IsNullOrEmpty(userName)){Console.WriteLine("ユーザー名を入力してください。");}else{Console.WriteLine($"こんにちは、{userName}さん。");}

文字列が入力されている場合だけ処理したいときは、否定演算子を使用します。

if (!string.IsNullOrEmpty(userName)){SaveUserName(userName);}

IsNullOrEmptyfalseである分岐では、対象がnullではなく、1文字以上の文字列であることが分かります。

4. IsNullOrEmptyを使わない判定方法との違い

4-1. value == nullとの違い

value == nullでは、nullだけを判定します。空文字は検出できません。

string? value1 = null;string value2 = "";

Console.WriteLine(value1 == null); // TrueConsole.WriteLine(value2 == null); // False

一方、IsNullOrEmptyは両方を検出します。

Console.WriteLine(string.IsNullOrEmpty(value1)); // TrueConsole.WriteLine(string.IsNullOrEmpty(value2)); // True

nullだけを区別する必要がある場合はvalue == nullnullと空文字を同じ状態として扱う場合はIsNullOrEmptyが適しています。

4-2. value == ""との違い

value == ""では、空文字だけを判定します。nullは空文字と等しくないため、結果はfalseです。

string? value1 = null;string value2 = "";

Console.WriteLine(value1 == ""); // FalseConsole.WriteLine(value2 == ""); // True

次のように書けば、nullと空文字を両方判定できます。

if (value == null || value == ""){Console.WriteLine("値が設定されていません。");}

ただし、IsNullOrEmptyを使うほうが短く、判定の意図も明確です。

if (string.IsNullOrEmpty(value)){Console.WriteLine("値が設定されていません。");}

4-3. value.Length == 0を使う場合の注意点

Length == 0でも空文字を判定できます。

string value = "";

if (value.Length == 0){Console.WriteLine("空文字です。");}

しかし、変数がnullの場合はLengthを取得できず、NullReferenceExceptionが発生します。

string? value = null;

// NullReferenceExceptionが発生するif (value.Length == 0){Console.WriteLine("空文字です。");}

安全に記述するには、先にnullを確認する必要があります。

if (value == null || value.Length == 0){Console.WriteLine("nullまたは空文字です。");}

この条件式は、実質的にstring.IsNullOrEmpty(value)と同じです。

4-4. IsNullOrEmptyを使うメリット

IsNullOrEmptyを使う主なメリットは次のとおりです。

  • nullと空文字を一度に判定できる

  • nullを渡しても例外が発生しない

  • 条件式を短く記述できる

  • 判定の目的が分かりやすい

  • nullチェックの書き忘れを防ぎやすい

複数の条件を自分で組み合わせるより、標準メソッドを使うほうがコードの可読性と保守性を高められます。

5. IsNullOrWhiteSpaceとの違い

5-1. IsNullOrWhiteSpaceとは

string.IsNullOrWhiteSpaceは、文字列が次のいずれかに該当する場合にtrueを返します。

  • null

  • 空文字

  • 空白文字だけで構成されている

基本構文は次のとおりです。

string.IsNullOrWhiteSpace(value)

使用例を確認してみましょう。

Console.WriteLine(string.IsNullOrWhiteSpace(null));   // TrueConsole.WriteLine(string.IsNullOrWhiteSpace(""));     // TrueConsole.WriteLine(string.IsNullOrWhiteSpace(" "));    // TrueConsole.WriteLine(string.IsNullOrWhiteSpace(" "));   // TrueConsole.WriteLine(string.IsNullOrWhiteSpace("\t"));   // TrueConsole.WriteLine(string.IsNullOrWhiteSpace("C#"));   // False

5-2. 空白だけの文字列をどう判定するか

フォーム入力などでは、ユーザーがスペースだけを入力することがあります。

string input = "   ";

IsNullOrEmptyでは、スペースも文字として扱われるためfalseになります。

Console.WriteLine(string.IsNullOrEmpty(input)); // False

空白だけの入力を未入力として扱う場合は、IsNullOrWhiteSpaceを使用します。

Console.WriteLine(string.IsNullOrWhiteSpace(input)); // True

ユーザー名やメールアドレス、検索キーワードなどの入力チェックでは、一般的にIsNullOrWhiteSpaceのほうが適しています。

5-3. IsNullOrEmptyとIsNullOrWhiteSpaceの比較表

文字列IsNullOrEmptyIsNullOrWhiteSpace
nulltruetrue
""truetrue
" "falsetrue
" "falsetrue
"\t"falsetrue
"\r\n"falsetrue
" C# "falsefalse
"C#"falsefalse

両者の違いは、空白だけの文字列をtrueと判定するかどうかです。

5-4. どちらを使うべきかの判断基準

IsNullOrEmptyIsNullOrWhiteSpaceは、要件に応じて使い分けます。

空白文字を有効な値として認める場合は、IsNullOrEmptyを使用します。

if (string.IsNullOrEmpty(value)){// nullまたは空文字}

空白だけの文字列も未入力として扱う場合は、IsNullOrWhiteSpaceを使用します。

if (string.IsNullOrWhiteSpace(value)){// null、空文字、または空白だけの文字列}

ユーザーが入力するデータではIsNullOrWhiteSpace、プログラム内部で空文字だけを特別扱いしたい場合はIsNullOrEmptyが選択肢になります。

6. IsNullOrEmptyを使うときの注意点

6-1. 空白文字はtrueにならない

IsNullOrEmptyを使ううえで特に注意したいのは、空白文字がtrueにならない点です。

string value = " ";

if (string.IsNullOrEmpty(value)){Console.WriteLine("未入力です。");}else{Console.WriteLine("入力されています。");}

この例では、スペースが1文字入っているため「入力されています。」と表示されます。

空白だけの文字列を無効にしたい場合は、IsNullOrWhiteSpaceを使用してください。

6-2. Trimと組み合わせるべきケース

文字列の前後にある空白を取り除いてから、空文字かどうかを確認したい場合があります。

string? value = "   ";

次のように、先にnullを確認してからTrimを呼び出せます。

if (value == null || value.Trim().Length == 0){Console.WriteLine("有効な文字がありません。");}

また、null条件演算子を使うこともできます。

if (string.IsNullOrEmpty(value?.Trim())){Console.WriteLine("有効な文字がありません。");}

ただし、空白だけかどうかを判定する目的なら、次の書き方のほうが意図が明確です。

if (string.IsNullOrWhiteSpace(value)){Console.WriteLine("有効な文字がありません。");}

Trimは、空白を除去した値を後続処理で使用する場合に適しています。

string? input = "  C#  ";

if (!string.IsNullOrWhiteSpace(input)){string normalizedValue = input.Trim();

Console.WriteLine(normalizedValue); // C#

}

6-3. 入力チェックでの落とし穴

フォーム入力の必須チェックにIsNullOrEmptyだけを使用すると、スペースだけの入力を許してしまう可能性があります。

string userName = "   ";

if (!string.IsNullOrEmpty(userName)){RegisterUser(userName);}

この条件は成立するため、空白だけのユーザー名が登録処理に渡されます。

入力値の必須チェックでは、次のようにIsNullOrWhiteSpaceを使用するのが一般的です。

if (string.IsNullOrWhiteSpace(userName)){Console.WriteLine("ユーザー名を入力してください。");return;}

RegisterUser(userName.Trim());

また、未入力チェックだけでなく、文字数や使用可能な文字なども検証する必要があります。

if (string.IsNullOrWhiteSpace(userName)){Console.WriteLine("ユーザー名を入力してください。");}else if (userName.Trim().Length > 20){Console.WriteLine("ユーザー名は20文字以内で入力してください。");}

6-4. nullable参照型との関係

C# 8.0以降では、nullable参照型を有効にすることで、nullになる可能性がある文字列をstring?として表現できます。

#nullable enable

string? nullableValue = null;string nonNullableValue = "C#";

string?nullになる可能性があるため、使用前にチェックが必要です。

string? value = GetValue();

if (!string.IsNullOrEmpty(value)){Console.WriteLine(value.Length);}

IsNullOrEmptyfalseになる分岐では、valuenullではないことが保証されます。そのため、通常は分岐内で安全にLengthなどへアクセスできます。

ただし、nullable参照型はコンパイル時の警告によって問題を見つけやすくする機能であり、実行時のnullを完全に防ぐものではありません。外部APIやデータベース、古いライブラリなどから予期しないnullが渡される可能性も考慮する必要があります。

6-5. 可読性を下げる書き方を避ける

次のような条件式は動作しますが、否定が重なって意味を理解しにくくなります。

if (string.IsNullOrEmpty(value) == false){Console.WriteLine(value);}

一般的には、否定演算子を使ったほうが簡潔です。

if (!string.IsNullOrEmpty(value)){Console.WriteLine(value);}

ただし、否定条件が複数重なる場合は、変数名で意図を表す方法も有効です。

bool hasValue = !string.IsNullOrEmpty(value);

if (hasValue){Console.WriteLine(value);}

複雑な条件を一行に詰め込まず、意味の分かる変数やメソッドへ分割すると、保守しやすいコードになります。

7. 実務でよくある使用例

7-1. フォーム入力値のチェック

Webフォームやデスクトップアプリの入力値を確認する例です。

string? email = request.Email;

if (string.IsNullOrWhiteSpace(email)){return BadRequest("メールアドレスを入力してください。");}

string normalizedEmail = email.Trim();

空白入力も拒否したいフォームでは、IsNullOrEmptyよりIsNullOrWhiteSpaceが適しています。

一方、空白を有効な入力として扱い、nullと空文字だけを拒否する場合はIsNullOrEmptyを使います。

if (string.IsNullOrEmpty(request.Comment)){return BadRequest("コメントが設定されていません。");}

7-2. APIレスポンスの文字列チェック

外部APIから取得した文字列は、nullや空文字になる可能性があります。

ApiResponse response = await GetApiResponseAsync();

if (string.IsNullOrEmpty(response.DisplayName)){Console.WriteLine("表示名を取得できませんでした。");return;}

Console.WriteLine(response.DisplayName);

代替値を設定する場合は、条件演算子を使用できます。

string displayName = string.IsNullOrEmpty(response.DisplayName)? "名前未設定": response.DisplayName;

空白だけの値も無効とする場合は、IsNullOrWhiteSpaceへ置き換えます。

7-3. 設定値・環境変数の未設定チェック

Environment.GetEnvironmentVariableの戻り値は、環境変数が存在しない場合にnullになる可能性があります。

string? apiKey = Environment.GetEnvironmentVariable("API_KEY");

if (string.IsNullOrEmpty(apiKey)){throw new InvalidOperationException("環境変数API_KEYが設定されていません。");}

空白だけの設定値も無効にする場合は、次のようにします。

if (string.IsNullOrWhiteSpace(apiKey)){throw new InvalidOperationException("環境変数API_KEYに有効な値が設定されていません。");}

設定ファイルから取得した接続文字列などの確認にも利用できます。

string? connectionString =configuration.GetConnectionString("DefaultConnection");

if (string.IsNullOrWhiteSpace(connectionString)){throw new InvalidOperationException("データベース接続文字列が設定されていません。");}

7-4. データベースから取得した値の判定

ORMを通じてデータベースから取得した文字列プロパティは、カラムの状態やマッピングによってnullになることがあります。

User? user = await dbContext.Users.FindAsync(userId);

if (user == null){return NotFound();}

if (string.IsNullOrEmpty(user.Nickname)){Console.WriteLine("ニックネーム未設定");}else{Console.WriteLine(user.Nickname);}

ADO.NETで値を直接取得する場合は、データベースのNULLDBNull.Valueとして返される点にも注意が必要です。

object databaseValue = reader["Nickname"];

string? nickname = databaseValue == DBNull.Value? null: Convert.ToString(databaseValue);

if (string.IsNullOrEmpty(nickname)){Console.WriteLine("ニックネーム未設定");}

IsNullOrEmptyDBNull.Valueを直接判定するメソッドではありません。文字列へ変換する前に、DBNull.Valueかどうかを確認します。

7-5. 早期リターンで処理を簡潔にする例

無効な値を最初に除外する早期リターンを使うと、条件分岐のネストを浅くできます。

void SendMessage(string? message){if (string.IsNullOrEmpty(message)){return;}

Console.WriteLine($"送信内容: {message}");SaveLog(message);NotifyUser(message);

}

空白だけのメッセージも送信しない場合は、次のようにします。

void SendMessage(string? message){if (string.IsNullOrWhiteSpace(message)){return;}

string normalizedMessage = message.Trim();Console.WriteLine($"送信内容: {normalizedMessage}");SaveLog(normalizedMessage);NotifyUser(normalizedMessage);

}

正常系の処理を深いelseブロックへ入れずに済むため、処理の流れを把握しやすくなります。

8. よくあるエラーと対処法

8-1. NullReferenceExceptionが発生する原因

nullの可能性がある文字列から、インスタンスメンバーを直接呼び出すとNullReferenceExceptionが発生します。

string? value = null;

// NullReferenceExceptionConsole.WriteLine(value.Length);

Lengthを取得する前に、IsNullOrEmptyで確認します。

if (!string.IsNullOrEmpty(value)){Console.WriteLine(value.Length);}

null条件演算子を使って、nullの場合は処理しない方法もあります。

Console.WriteLine(value?.Length);

ただし、必須値として扱う場合は、処理をスキップするだけでなく、エラーを通知することも必要です。

8-2. LengthやTrimを先に呼んでしまうミス

次のコードでは、IsNullOrEmptyへ渡す前にTrimが実行されます。

string? value = null;

// Trimの呼び出し時点でNullReferenceExceptionif (string.IsNullOrEmpty(value.Trim())){Console.WriteLine("未入力です。");}

IsNullOrEmpty自体が安全でも、引数を作る処理で例外が発生する点に注意してください。

対処法の一つは、先にnullを確認することです。

if (value == null || value.Trim().Length == 0){Console.WriteLine("未入力です。");}

null条件演算子を使う方法もあります。

if (string.IsNullOrEmpty(value?.Trim())){Console.WriteLine("未入力です。");}

空白判定が目的なら、より簡潔なIsNullOrWhiteSpaceを使用できます。

if (string.IsNullOrWhiteSpace(value)){Console.WriteLine("未入力です。");}

8-3. 空白入力を許してしまうミス

IsNullOrEmptyでは空白だけの入力を拒否できません。

string input = "   ";

if (!string.IsNullOrEmpty(input)){Console.WriteLine("入力値は有効です。");}

このコードでは、「入力値は有効です。」と表示されます。

ユーザー入力の必須チェックでは、次のようにします。

if (string.IsNullOrWhiteSpace(input)){Console.WriteLine("有効な文字を入力してください。");return;}

さらに、空白を除去した値を後続処理に渡します。

string normalizedInput = input.Trim();SaveValue(normalizedInput);

8-4. 条件式が複雑になる場合の整理方法

複数の条件を一つのif文へ詰め込むと、コードが読みにくくなります。

if (!string.IsNullOrWhiteSpace(name)&& name.Trim().Length <= 20&& !name.Contains("@")&& isRegistrationEnabled){Register(name.Trim());}

検証処理を順番に分けると、エラーの原因も明確になります。

if (!isRegistrationEnabled){return;}

if (string.IsNullOrWhiteSpace(name)){Console.WriteLine("名前を入力してください。");return;}

string normalizedName = name.Trim();

if (normalizedName.Length > 20){Console.WriteLine("名前は20文字以内で入力してください。");return;}

if (normalizedName.Contains("@")){Console.WriteLine("名前に@は使用できません。");return;}

Register(normalizedName);

検証ルールが増える場合は、専用メソッドへ分割する方法も有効です。

bool IsValidUserName(string? value){if (string.IsNullOrWhiteSpace(value)){return false;}

string normalizedValue = value.Trim();return normalizedValue.Length &lt;= 20&amp;&amp; !normalizedValue.Contains("@");

}

9. IsNullOrEmptyに関するよくある質問

9-1. String.IsNullOrEmptyとstring.IsNullOrEmptyに違いはある?

String.IsNullOrEmptystring.IsNullOrEmptyの動作に違いはありません。

bool result1 = String.IsNullOrEmpty(value);bool result2 = string.IsNullOrEmpty(value);

C#のstringは、.NETのSystem.Stringに対するキーワードエイリアスです。

string value1 = "C#";System.String value2 = "C#";

どちらを使用しても同じ型になります。C#のコードでは、一般的にキーワード形式のstringが使用されます。

なお、Stringを名前空間の指定なしで使用するには、通常はSystem名前空間が参照されている必要があります。

9-2. String.Emptyとの違いは?

String.Emptyはメソッドではなく、空文字を表す静的フィールドです。

string value = string.Empty;

一方、IsNullOrEmptyは文字列の状態を判定するメソッドです。

bool result = string.IsNullOrEmpty(value);

それぞれの役割は次のように異なります。

記述役割
""空文字を表す
string.Empty空文字を表す
string.IsNullOrEmpty(value)nullまたは空文字か判定する

空文字を代入するときは""またはstring.Emptyを使い、値を判定するときはIsNullOrEmptyを使います。

9-3. 配列やListにもIsNullOrEmptyは使える?

string.IsNullOrEmptyは文字列専用のメソッドです。配列やList<T>には直接使用できません。

配列の場合は、nullLengthを確認します。

int[]? numbers = null;

if (numbers == null || numbers.Length == 0){Console.WriteLine("配列に要素がありません。");}

List<T>の場合は、nullCountを確認します。

List<int>? numbers = null;

if (numbers == null || numbers.Count == 0){Console.WriteLine("リストに要素がありません。");}

IEnumerable<T>の要素が存在するかどうかは、LINQのAnyを使って判定できます。

IEnumerable<int>? numbers = GetNumbers();

if (numbers == null || !numbers.Any()){Console.WriteLine("要素がありません。");}

ただし、列挙処理のコストや、同じシーケンスを複数回列挙する可能性には注意が必要です。

9-4. パフォーマンス面で問題はある?

通常のアプリケーションで、string.IsNullOrEmptyのパフォーマンスが問題になることはほとんどありません。

概念的には、次のような非常に単純な判定を行います。

value == null || value.Length == 0

文字列全体を走査する必要はなく、nullかどうかと文字数が0かどうかを確認するだけです。

また、IsNullOrEmptyを呼び出しても、新しい文字列は生成されません。可読性と安全性の面から、手動で条件を書くより標準メソッドを利用するのが基本です。

一方、Trimは結果に応じて新しい文字列を扱う可能性があります。単に空白だけかを判定したい場合は、一般的にIsNullOrWhiteSpaceを使用するほうが目的に合っています。

9-5. null許容参照型では使う必要がない?

nullable参照型を有効にしていても、IsNullOrEmptyが不要になるわけではありません。

nullable参照型は、nullになる可能性をコンパイラが解析し、警告を出すための機能です。

string? value = GetValue();

この変数はnullになる可能性があるため、使用前に確認する必要があります。

if (string.IsNullOrEmpty(value)){return;}

Console.WriteLine(value.Length);

また、stringとして宣言した変数でも、外部ライブラリ、リフレクション、デシリアライズ、既存コードとの連携などによって、実行時に予期しない値を受け取る可能性があります。

ただし、すべての文字列に機械的なIsNullOrEmptyチェックを追加する必要はありません。型の設計や入力元、業務上の要件に応じて、必要な場所で使用することが重要です。

まとめ

C#のstring.IsNullOrEmptyは、文字列がnullまたは空文字""であるかをまとめて判定できるメソッドです。

if (string.IsNullOrEmpty(value)){Console.WriteLine("nullまたは空文字です。");}

nullを渡しても例外が発生せず、value == null || value == ""と書くよりも簡潔で、処理の意図が分かりやすくなります。

ただし、半角スペースや全角スペース、タブ、改行などを含む文字列は空文字ではありません。そのため、空白だけの文字列も未入力として扱いたい場合は、string.IsNullOrWhiteSpaceを使用します。

if (string.IsNullOrWhiteSpace(value)){Console.WriteLine("有効な文字が入力されていません。");}

使い分けの基準は次のとおりです。

  • nullと空文字だけを判定するならIsNullOrEmpty

  • 空白だけの文字列も判定するならIsNullOrWhiteSpace

  • 空白を除去した値を後続処理で使うなら、判定後にTrim

  • 配列やList<T>では、LengthCountを使って個別に判定する

文字列の入力元と「何を未設定とみなすのか」を明確にしたうえで、適切なメソッドを選ぶことが重要です。