うら干物書き

ゲームを作りたい!

【C#,LINQ】ToArray~シーケンスから配列を作りたいとき~

 C#のLINQの関数であるToArray()の使い方についてです。
 配列やリストなどのシーケンスから配列を作ることが出来ます。
f:id:urahimono:20180701235128p:plain


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

配列を作る!

 配列が欲しい!
 手元にList<T>IEnumerable<T>はあるけど、俺が欲しいのは配列なんだ!
 そんなときはLINQToArray()を使うことで、願望をかなえることが出来ます。

public static TSource[] ToArray<TSource>( this IEnumerable<TSource> source );
Enumerable.ToArray(TSource) メソッド (IEnumerable(TSource)) (System.Linq)

 使い方は簡単で、IEnumerable<T>を継承したクラスがToArray()を呼ぶだけ。

Program.cs

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

public static class Program
{
    static void Main( string[] args )
    {
        // いろんなデータを……。
        List<float>         dataA   = new List<float>() { 0.1f, 2.3f, 6.7f };
        IEnumerable<int>    dataB   = Enumerable.Range( 0, 10 );
        string[]            dataC   = new string[] { "正一郎", "清次郎", "誠三郎", "征史郎" };

        // 全部配列に変えちゃえ!
        float[]     arrayA  = dataA.ToArray();
        int[]       arrayB  = dataB.ToArray();
        string[]    arrayC  = dataC.ToArray();

        // 結果発表
        System.Console.WriteLine( "dataA :{0}",  dataA.Text() );
        System.Console.WriteLine( "arrayA:{0}", arrayA.Text() );

        System.Console.WriteLine( "dataB :{0}",  dataB.Text() );
        System.Console.WriteLine( "arrayB:{0}", arrayB.Text() );

        System.Console.WriteLine( "dataC :{0}",  dataC.Text() );
        System.Console.WriteLine( "arrayC:{0}", arrayC.Text() );

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

    /// <summary>
    /// 簡易的なシーケンスのテキスト取得処理
    /// </summary>
    public static string Text( this IEnumerable i_source )
    {
        string text = string.Empty;
        foreach( var value in i_source )
        {
            text += string.Format( "[{0}], ", value );
        }
        return text;
    }

} // class Program

dataA :[0.1], [2.3], [6.7],
arrayA:[0.1], [2.3], [6.7],
dataB :[0], [1], [2], [3], [4], [5], [6], [7], [8], [9],
arrayB:[0], [1], [2], [3], [4], [5], [6], [7], [8], [9],
dataC :[正一郎], [清次郎], [誠三郎], [征史郎],
arrayC:[正一郎], [清次郎], [誠三郎], [征史郎],

 配列から配列を作る事だってできちゃいます。
 是非ともToArray()を七兆回ほど使って、世の中を配列だらけにしてみてください。

LINQのリンク