うら干物書き

ゲームを作りたい!

【C#,LINQ】Empty~空のシーケンスがほしいとき~

 C#のLINQの関数であるEmpty()の使い方についてです。
 空のシーケンスを作成することが出来ます。
f:id:urahimono:20180617125926p:plain


この記事には.NET Framework 4.6.1を使用しています。

空のシーケンスがどうしても欲しい

 僕の財布の中身は今日も空っぽです。
 空の財布はいらないかもしれませんが、空のシーケンスが必要なときがあるかもしれません。
 そんなときはLINQEmpty()を使ってみてください。
 指定した型の空のシーケンスが作られるはずです。

public static IEnumerable<TResult> Empty<TResult>();
Enumerable.Empty(TResult) メソッド (System.Linq)

Program.cs

using System.Linq;
using System.Collections;
using System.Collections.Generic;

public static class Program
{
    private class Parameter
    {
        public int      ID      { get; set; }
        public string   Name    { get; set; }

        public override string ToString()
        {
            return string.Format( "ID:{0}, Name:{1}", ID, Name );
        }
    }

    static void Main( string[] args )
    {
        IEnumerable<int>        intSequence         =  Enumerable.Empty<int>();
        IEnumerable<string>     stringSequence      =  Enumerable.Empty<string>();
        IEnumerable<Parameter>  parameterSequence   =  Enumerable.Empty<Parameter>();

        // 配列に変換する。
        int[]           intArray    = intSequence.ToArray();
        // リストに変換する。
        List<string>    stringList  = stringSequence.ToList();

        // 結果発表
        System.Console.WriteLine( "intArray 数:{0}",             intArray.Length );
        System.Console.WriteLine( "stringList 数:{0}",           stringList.Count );
        System.Console.WriteLine( "parameterSequence 数:{0}",    parameterSequence.Count() );

        // 入力待ち用
        System.Console.ReadKey();
    }

} // class Program

intArray 数:0
stringList 数:0
parameterSequence 数:0

 このEmpty()を単品で使う機会は少ないかもしれませんが、他のLINQの関数に対してシーケンスを渡す際に使うことがあると思います。
 七兆回使ってみてください。