カテゴリー
C

独習C#第3版、delegateとステートメント形式のラムダ

using System;
using System.Collections;

namespace Chapter01All
{
    delegate ArrayList Ary(int x);
    class DelegateLambdaSample2
    {
        static void Main()
        {
            Ary aryOp = AryCreate;
            var ary = aryOp(10);
            foreach (int x in ary)
                Console.Write(x + " ");
            Console.WriteLine();

            Ary aryOp2 = n =>
            {
                ArrayList ans = new ArrayList();
                for (int i = 0; i < n; i++)
                {
                    ans.Add(i);
                }
                return ans;
            };

            var ary2 = aryOp2(20);
            foreach (int x in ary2)
                Console.Write(x + " ");
            
        }
        static ArrayList AryCreate(int a)
        {
            ArrayList ans = new ArrayList();
            for (int i = 0; i<a; i++)
                ans.Add(i);
            return ans;
        }
    }
}

using System;
using System.Collections;

namespace Chapter01All
{
    delegate ArrayList Ary(int x, int y);
    class DelegateLambdaSample2
    {
        static void Main()
        {
            Ary aryOp = AryCreate;
            var ary = aryOp(10, 20);
            foreach (int x in ary)
                Console.Write(x + " ");
            Console.WriteLine();

            Ary aryOp2 =( n, m) =>
            {
                ArrayList ans = new ArrayList();
                for (int i = n; i < m; i++)
                {
                    ans.Add(i);
                }
                return ans;
            };

            var ary2 = aryOp2(20, 30);
            foreach (int x in ary2)
                Console.Write(x + " ");
            
        }
        static ArrayList AryCreate(int a, int b)
        {
            ArrayList ans = new ArrayList();
            for (int i = a; i < b; i++)
                ans.Add(i);
            return ans;
        }
    }
}

デリゲートは共通で使えるので、ステートメントの形式のラムダと関数を比較してみました。上のと下のはほぼ同じです。引数が下は2個あります。

コメントを残す

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

inserted by FC2 system