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 チェックとは異なることに注意してください。空の文字列や、スペース、タブ、その他の空白文字だけを含む文字列も検出します。
チャレンジ
簡単processUserName という名前のメソッドを作成し、userName という string パラメーターを受け取るようにしてください。メソッドは次のように動作する必要があります:
userNameが null の場合は、"No user provided" を返すuserNameが空、または whitespace のみの場合は、"Invalid username" を返す- それ以外の場合は、[userName] が実際のユーザー名である "Welcome, [userName]!" を返す
適切な null チェックのパターンを使用してください。
自分で試してみよう
using System;
class ProcessUserName
{
public static string processUserName(string userName)
{
// ここにコードを書いてください
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: C#オンラインコンパイラ