using System;
using System.Collections.Generic;
using System.Linq;
class MainClass
{
static void Main()
{
// int型のListを定義
var num = new List<int>();
int i = 0;
// numに0から4の自然数を追加
while (i < 5)
{
num.Add(i++);
}
// LINQによりデータを取得
var linq = from n in num select n;
// 出力値:0 1 2 3 4
foreach (var n in linq)
{
Console.Write("{0} ", n);
}
// 改行
Console.WriteLine();
// numの0と1を入れ替える
int tmp = 1;
num[1] = 0;
num[0] = tmp;
/* 遅延実行の機能によりlinqにも
* numの入れ替えが反映される
* 出力値:1 0 2 3 4 */
foreach (var n in linq)
{
Console.Write("{0} ", n);
}
Console.WriteLine();
// 遅延実行を避けるためにlinqをListに変換
linq = linq.ToList();
// 出力値:1 0 2 3 4
foreach (var n in linq)
{
Console.Write("{0} ", n);
}
Console.WriteLine();
/* この時点でのnum
* 出力値:1 0 2 3 4 */
foreach (var n in num)
{
Console.Write("{0} ", n);
}
Console.WriteLine();
// numの2と3を入れ替える
int tmp1 = 2;
num[2] = 3;
num[3] = tmp1;
// 出力値:1 0 3 2 4
foreach (var n in num)
{
Console.Write("{0} ", n);
}
Console.WriteLine();
/* linqは配列に変換されているので
* 遅延実行を回避できる
* 出力値:1 0 2 3 4 */
foreach (var n in linq)
{
Console.Write("{0} ", n);
}
Console.WriteLine();
}
}
0 コメント:
コメントを投稿