2010年1月31日日曜日

System.Collections.Generic Name SpaceのList Classをインスタンス化してlistを定義し、そのデータをLINQ(Language Integrated Query)構文(from句、select句)で取得して遅延実行を回避するためToArray MethodでListをArrayに変換し、Listの要素の順番を入れ替えてもarrayには反映されず、Linqの遅延実行が回避されていることを確認してみる。

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

class MainClass
{
    static void Main()
    {
        // List Classをインスタンス化
        var list = new List<int>();

        // listに値を代入
        int i = 0;
        while (i < 5)
        {
            list.Add(i + 1);
            i++;
        }

        // Linqでデータを取得し配列に変換
        var array = 
            (from n in list select n).ToArray();

        // 出力値:1 2 3 4 5
        foreach (var n in array)
        {
            Console.Write("{0} ", n);
        }
        Console.WriteLine();

        // listの要素の順番を入れ替え
        var tmp = list[1];
        list[2] = list[1];
        list[1] = tmp;

        /* linqで取得したデータを配列に変換
         * しているのでLinqの遅延実行は回避され
         * 上記の入れ替えは反映されないことを確認
         * 出力値:1 2 3 4 5 */
        foreach (var n in array)
        {
            Console.Write("{0} ", n);
        }
        Console.WriteLine();
    }
}

0 コメント:

コメントを投稿