C#ライブラリリファレンス - 生成演算子で空のデータ集合を生成する
Enumerable静的クラスのEmpty拡張メソッドを使用すると、特定のコレクションオブジェクトを意識しないで、データの空集合を生成できます。
日常でたとえると
書けるものを用意しておいて。
使用に適した状況
Listや配列といった、特定のコレクションオブジェクト(コンテナオブジェクト)を意識せず、より抽象的な処理を書きたい場合。
サンプル
/*---------------------------------------------------------
*
* 生成演算子で空のデータ集合を生成する
*
---------------------------------------------------------*/
using System;
using System.Linq;
class Sample
{
static void Main( )
{
//空のデータ集合を作って確認
var ie = Enumerable.Empty< int >();
Console.WriteLine(
"データの型:{0}",
ie.GetType().Name );
Console.WriteLine(
"個数:{0}",
ie.Count() );
//終了
Console.WriteLine( "サンプル終了。" );
Console.ReadLine();
}
}
名前空間
Sytem.Linq名前空間を参照してください。
解説
オブジェクト指向プログラミングをしていると、抽象的な処理を書く機会が増えます。抽象的な処理を書けるようになると、プログラミングの力が飛躍的にアップするので、プログラミングが上達するにつれて、自然とより抽象的に書けないかを考えるようになります。
この際に問題になるは、new演算子の抽象化です。つまり、「どのオブジェクトを使用するのか」を抽象化する必要が生じます。ですが、普通のオブジェクト指向言語の機能を使用すると、特定のオブジェクトを指定し、インスタンスを生成するしかありません。これでは、抽象的な処理が書きにくいです。それ故に、デザインパターンを駆使することになります。
しかしながら、抽象化により、複雑なオブジェクト設計になるのは避けたいです。シンプルさを突き詰めて、抽象化するのであって、不必要な複雑化は望ましくありません。そこで重宝するのが、特定のインタフェースを持つオブジェクトを生成するメソッドです。
インタフェースを使用すると、具象的な「どのオブジェクトを生成する」という問題を解決できます。短いサンプルでは有用性を示せませんが、Enumerable静的クラスのEmpty拡張メソッドは、本格的にプログラミングをする上で、非常に役立ちます。覚えておくとよいと思います。