こんにちは。阿部です。
拡張メソッド、便利ですよね。
過去の投稿でも、DateTime
から月末の日付を取得するメソッドや、
‘Dictionary’でキーが無い場合に規定値を返すメソッドを紹介していますが、
今回は、拡張メソッドを使ったnull
チェックについてお伝えします。
String.IsNullOrEmpty
をインスタンスメソッドのように使う
拡張メソッドは、オブジェクトがnull
でも例外が発生しません。
つまり、null
チェックを行うようなメソッドが実装できます。
これは、通常のメソッドにはできないことです。
1
2
3
4
5
6
7
|
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string value)
{
return string.IsNullOrEmpty(value);
}
}
|
使い方です。
1
2
3
4
5
|
// before
if (string.IsNullOrEmpty(text))
// after
if (text.IsNullOrEmpty())
|
そんなに短くなっているわけではないのですが、自然な英語として読めるのがメリットです。同様に、string.IsNullOrWhiteSpace
も拡張メソッドにできます。
配列やList
のnull
チェック
他に作るとしたら、ICollection.IsNullOrEmpty
などが便利かもしれません。
配列やList
が、処理結果によってnull
だったり空だったりするようなケースに使えそうです。
1
2
3
4
5
6
7
|
public static class CollectionExtensions
{
public static bool IsNullOrEmpty(this ICollection collection)
{
return collection == null || collection.Count == 0;
}
}
|
使い方です。
1
2
3
4
5
6
|
var list = FetchSomeData(); // 取得失敗時にnullを返すようなメソッド
if (list.IsNullOrEmpty())
{
// 取得失敗 or データ無しのときの処理を記述する
}
|
以上です。