カテゴリー
C

独習C#第3版、P520 LINQとvar

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はシステムが該当するデータタイプを決めてくれるようですが、例えば上の様に配列にしないと使えないこともあるようです。なので、実行時エラーが起きることもあり得るようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

inserted by FC2 system