[C#] Lamda expression practice 람다식 연습



 class Program
    {
        delegate int LamdaTest(int[] arg);
        //delegate int TestWhat(int[] arg);
        //delegate int Result(int[] arg);
        //delegate int Sum(int[] arg);
        //delegate int Calculator2(int a, int b);
        //delegate string Concatenate(string[] args);
        static void Main(string[] args)
        {
            //LamdaTest LtSum = (arg) =>
            //    {
            //        int sum =0;
            //        foreach (int i in arg)
            //            sum += i;
            //        return sum;
            //    };
            //int LamdaTestResult = LtSum(new int[] { 1, 2, 3, 4, 23, 123, 1, 32, 1231, });
            //Console.WriteLine(LamdaTestResult);

        //    TestWhat Result = (arg) =>
        //        {
        //            int sum = 0;
        //            foreach (int i in arg)
        //                sum += i;
        //            return sum;
        //        };
        //    int testResult = Result(new int[] { 1, 2, 3, 3, 4, 6, 7, });
        //    Console.WriteLine("{0}" , testResult);

        //    Result sumResult = (arg) =>
        //        {
        //            int hereSum = 0;
        //            foreach (int i in arg)
        //                hereSum += i;
        //            return hereSum;
        //        };
        //    int sum = sumResult(new int[]{1,2,3,4,5,6});
        //    Console.WriteLine("1+2+3+4+5+6 =" + sum);


            //Sum sumdeli = (arg) =>
            //    {
            //        int mySum = 0;
            //        foreach (int i in arg)
            //            mySum += i;
            //        return mySum;
            //    };
            //int sum = sumdeli(new int[] { 1, 2, 3, 4, 5 });
            //Console.WriteLine("1+2+3+4+5=" + sum);


            //Expression<Func<int, int, int>> expression =
            //    (a, b) => 1 * 2 + (a + b);

            //Func<int, int, int> func = expression.Compile();
            //Console.WriteLine("1*2 +({0} -{1}) = {2}", 7, 8, func(7, 8));

            //Expression<Func<double, double, double>> expression2 =
            //    (a, b) => 1 * 3 + (a * b);

            //Func<double, double, double> func2 = expression2.Compile();
            //Console.WriteLine("1 *3 +({0} * {1})  = {2}", 4, 6, func2(12, 32));

            //Expression<Func<float, float>> df = (a) => a * a;
            //Expression<Func<int, int>> ff = (a) => a / a;
            //Expression<Func<double, double, double>> gg = (a,c) =>  a * c ;
            //Func<float, float> func3 = df.Compile();
            //Console.WriteLine("{0}", func3(6));
             




            //Calculator2 cal = (a, b) => a + b;
            //Calculator2 cal2 = (a, b) => a * b;
            //Console.WriteLine(" {0} ", cal(2,3));
            //Console.WriteLine(" {0}", cal2(4, 5));

            //Concatenate concat =  (arr) =>
             
            //    {
            //        string result = "";
            //        foreach (string s in arr)
            //            result += s;
            //    };

            //Console.WriteLine(concat(args));

         
            //Func<int> func1 = () => 10;

            //Console.WriteLine("func1 : {0}", func1());

            //Func<int, int> func2 = (x) => x * 2;
            //Console.WriteLine("func2 : {0}", func2(4));

            //Func<double, double, double> func3 = (x, y) => x / y;
            //Console.WriteLine("func3 :{0}", func3(43, 2));

            //Action act1 = () => Console.WriteLine("Action()");
            //act1();

            //int result = 0;
            //Action<int> act2 = (x) => result = x * x;
            //      // 액션인데 인트형식으로 x를 input 받아서 Method 처리 한것을 result에 저장
            //act2(3);
            //Console.WriteLine("{0}", result);


            //int result2 = 0;
            //Action<int> act3 = (x) => result2 = x * x * x;


            //act3(2);
            //Console.WriteLine("{0}", result2);

            // Func<int, int> = (x) => x*x; return 값이 있고
            // Action<int> = (x) => a = x*x; int a = 0; 리턴 값이 없다.

            //Action<double, double> act3 = (x, y) =>
            //    {
            //        double pi = x / y;
            //        Console.WriteLine("Action<T1, T2>({0},{1}): {2}", x, y, pi);
            //    };

         
            //act3(43, 4);

        }

(Parameter) => expression;
(매게변수) => 식 ;
(a) => a *2;

Func<int, int>  FuncTest = (A) => a*a;   // 첫번째 int 형식의 입력 , return 형식인 int
Action<int, int> ActionTest = (a,b) = a *b // 두 int 모두 입력 매개변수 타입, Action<>은 return 없어용~


C# 에서 람다식은 내게 Window8과 같다. 첨 익숙해지긴 어렵지만 접근하기 쉽고 이것으로 많은 코딩표현이 가능해 보인다.

댓글

이 블로그의 인기 게시물

[C# Winform 예제] ScreenSaver 스크린세이버 만들기

아 정말 이사람 IELTS 관한 비법 글은.. 정말 공감10000%

Vocabulary for IELTS (2000 words) advanced level.