徳島ゲーム開発ごっこ 技術ブログ

ゲームを作るために役に立ったり立たなかったりする技術を学んでいきます!

【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の関数に対してシーケンスを渡す際に使うことがあると思います。
 七兆回使ってみてください。

LINQのリンク