using System;
using System.Collections;
using System.Linq;
namespace Chapter01All
{
delegate ArrayList Ary(int[] ary, int x, int y);
class LinqArray
{
static void Main()
{
int[] test = { 0, 5, 10, -5, 2, 7, -3 };
Ary aryOp = AryCreate; //デリゲート
ArrayList ary = aryOp(test, -99, -1);
OutAryList(ary);
var NewAry1 = from n in test //LINQ
where n < 0
select n;
foreach (int x in NewAry1)
Console.Write(x + ", ");
Console.WriteLine();
var NewAry2 = from n in test //LINQ
where n >= 0
select n;
foreach (int x in NewAry2)
Console.Write(x + ", ");
Console.WriteLine();
int[] ans = NewAry2.ToArray(); //intの配列に変換するのだが…
for (int i = 0; i < ans.Length; i++)
Console.Write(ans[i] + ", ");
}
static ArrayList AryCreate(int[] ary, int a, int b)
{
ArrayList ans = new ArrayList();
for (int i = 0; i < ary.Length; i++)
if (ary[i] >= a & ary[i] <= b)
ans.Add(ary[i]);
return ans;
}
static void OutAryList(ArrayList ary)
{
foreach (int x in ary)
Console.Write(x + ", ");
Console.WriteLine();
}
}
}
varはシステムが該当するデータタイプを決めてくれるようですが、例えば上の様に配列にしないと使えないこともあるようです。なので、実行時エラーが起きることもあり得るようです。