Menu
Coddy logo textTech

Nullチェックのパターン

CoddyのC#ジャーニー「ロジックとフロー」セクションの一部。レッスン 33/66。

Null チェックは、堅牢な C# コードを書くうえで不可欠な要素です。null 値を安全にチェックするために使用できるパターンはいくつかあります。

よく使われる null チェックのパターンをいくつか見てみましょう。

まず、基本的な null チェック:

string name = null;

if (name == null)
{
    Console.WriteLine("Name is null");
}

もう一つの一般的なパターンは、null の可能性があるオブジェクトのメンバーに安全にアクセスする null 条件演算子(?.)です:

string name = null;
int? length = name?.Length;  // length は null になります

null 合体演算子(??)は、式が null の場合にデフォルト値を提供します:

string name = null;
string displayName = name ?? "Unknown";  // displayName は "Unknown" になります

より複雑なシナリオでは、これらのパターンを連結することもできます。

string name = null;
int length = (name ?? "").Length;  // length は 0 になる

string.IsNullOrWhiteSpace() メソッドは、文字列が null、空、または空白文字のみを含んでいるかどうかを、1回の呼び出しですべてまとめて確認できる便利な方法です。

string name = null;

if (string.IsNullOrWhiteSpace(name))
{
    Console.WriteLine("Name is null, empty, or whitespace");
}

これは、null、empty、whitespace-only の文字列を同じように扱う必要がある場合に特に便利です。例:

string name1 = null;
string name2 = "";
string name3 = "   ";

// 3つすべてがメッセージを出力します
if (string.IsNullOrWhiteSpace(name1)) Console.WriteLine("name1 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name2)) Console.WriteLine("name2 is null/empty/whitespace");
if (string.IsNullOrWhiteSpace(name3)) Console.WriteLine("name3 is null/empty/whitespace");

string.IsNullOrWhiteSpace() は単純な null チェックとは異なることに注意してください。空の文字列や、スペース、タブ、その他の空白文字だけを含む文字列も検出します。

challenge icon

チャレンジ

簡単

processUserName という名前のメソッドを作成し、userName という string パラメーターを受け取るようにしてください。メソッドは次のように動作する必要があります:

  1. userName が null の場合は、"No user provided" を返す
  2. userName が空、または whitespace のみの場合は、"Invalid username" を返す
  3. それ以外の場合は、[userName] が実際のユーザー名である "Welcome, [userName]!" を返す

適切な null チェックのパターンを使用してください。

自分で試してみよう

using System;

class ProcessUserName
{
    public static string processUserName(string userName)
    {
        // ここにコードを書いてください
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: C#オンラインコンパイラ