2014년 11월 12일 수요일

34. [C#닷넷]C#다식(Lambda Expression) - 개요, 람다식 예제, 무명함수,델리게이트,delegate[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]

34. [C#닷넷]C#다식(Lambda __EXPRESSION__) - 개요, 람다식 예제, 무명함수,델리게이트,delegate
 
람다식(Lambda __EXPRESSION__) - 개요람다식 예제

람다식은 알론조 처치(Alonzo Church)라는 수학자가 발표한 람다 계산법에서 사용하는 식이며 이를 그의 제자 존 매카시가 프로그래밍 언어에 도입했는데 LISP이라는 언어로 발전 했습니다. C/C++/JAVA에서는 현재 지원하고 있지 않음(JAVA7에서 지원하려 했으나 취소됨, JAVA8에서 지원예정)

람다식은 익명메소드(Anonymous Method)를 만들기 위해 사용하며다만 람다식으로 만든 익명 메소드는  무명함수(Anonymous Function)이라고 부른다. MS는 델리게이트를 이용한 익명 메소드를 C#2.0에서 도입했는데 람다식은 C#3.0이후에 도입되었다.  아마도 람다식을 사용하는 것이 익명 메소드를 만들 때 용이할 것 이다또한 람다 식은 LINQ 쿼리 식을 작성하는 데 특히 유용하다.

[형식]

매개변수목록 => 

=>연산자는 입력 연산자로서 매개변수를 전달하는 의미, =>를 중심으로 왼쪽에 매개변수가 오른쪽에 식이 위치하고 다른 쪽에 식이나 문 블록을 삽입합니다예를 들어 람다 식 x => x * x는 이름이 x인 매개 변수를 지정하고 x 제곱 값을 반환한다.

람다식 예문을 보기 전에 델리게이트를 이용하여 익명 메소드를 구현하면

delegate int Calc(int a, int b);
……
……
//두개의 매개변수 a,b를 입력받아 그 합을 리턴하는 익명 메소드를 델리게이트로 만듬
static void Main(string[] args) {
             Calc calc = delegate(int a, int b)
                    {
                       return a+b;
                    };
}


이번엔 람다식을 이용한 예문을 보자먼저 익명 메소드를 위해 델리게이트를 선언

delegate int Calc(int a, int b);
……
……
//두개의 매개변수 a,b를 입력받아 그 합을 리턴하는 익명 메소드를 람다식으로 만듬
static void Main(string[] args) {
             Calc calc = (int a, int b) => a+b;
}



C# 컴파일러에서는 위 코드를 더 간결하게 형식 유추(Type Inference)라고 해서 매개변수의 형식을 제거할 수 있다.(델리게이트의 선언 코드로부터 형식을 유추함)

delegate int Calc(int a, int b);
Calc calc = (a, b) => a+b;

[람다식 예제]


using System;

namespace Lambda
{
    class Program
    {
        delegate int Calc(int a, int b);

        static void Main(string[] args)
        {
            Calc cal = (a, b) => a + b;
            int sum = cal(1, 2);
            Console.WriteLine("1+2=" + sum);
        }
    }
}
[결과]
1+2=3


[과제]

수를 입력하면 제곱근을 구하는 익명메소드를 람다식을 delegate, lambda 식을 이용하여 구하시오.


 [개발실무&100%환급]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… 오라클자바…12-272454
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-111802
53 [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… 오라클자바…03-151609
52 [주말]C#,ASP.NET마스터 오라클자바…01-311705
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-312372
50 [평일주간야간,주말]C기본&자료구조,알고리즘 오라클자바…01-311345
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… 오라클자바…01-191650
48 [평일야간,주말]안드로이드개발자과정(Android기초실무) 오라클자바…01-111510
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032037
46 [개발실무&100%환급]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… 오라클자바…12-272454
45 [기업100%환급,평일주간5일 교육]JAVA,JDBC,Servlet,JSP 오라클자바…12-191766
44 [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… 오라클자바…12-141743
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-111802
42 [기업100%환급]웹퍼블리싱마스터(HTML5,CSS3,JavaScript,jQUERY) 오라클자바…12-091409
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011639
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-011812
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011289

댓글 없음:

댓글 쓰기