2014년 11월 20일 목요일

37. C# Action Delegate(C# Action 델리게이트, Lambda), 무명함수, 람다식[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]

C# Action Delegate(C# Action 델리게이트, Lambda), 무명함수, 람다식
Action 델리게이트는 Func 델리게이트와 거의 유사하다차이점이라면 반환 형식이 없다는 것이다 Action 델리리게이트 역시 닷넷4.0 프레임워크에는 대략 17가지 준비되어 있다.

public delegate TResult Action< >()
public delegate TResult Func<in T >(T arg)
public delegate TResult Func<int T1, in T2>(T1 arg, T2 arg)
public delegate TResult Func<int T1, in T2, in T3 >(T1 arg, T2 arg, T3 arg)

……
……
public delegate TResult Func<in T1,,,in T16>(T1 arg, T2 arg, T3 arg,,, T16 arg)

Func 델리게이트와는 반환값이 없는 것이 특징이며 형식 매개변수는 모두 입력 매개변수 이다.

[사용 예문]

입력 매개 변수가 없는 경우

Action action1 = () => Console.WriteLine(No Parameter Action Delegate);
action1();

입력 매개 변수가 두개인 경우

int sum=0;

//입력 매개변수는 둘더한 결과를 밖에서 선언한 sum에 저장
Action<int, int> action2 = (x, y) => sum=x*y;
action2(1,2);
Console.WriteLine(1+2={0}, sum);      //9 리턴




[예제 1]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication4
{
    //델리게이트 정의
    delegate bool Onj1();
    delegate bool Onj2(int i);

    class Program
    {

        static void Main(string[] args)
        {
            Action act1 = () => Console.WriteLine("오라클자바커뮤니티프로그래밍");
            act1();

            int ret=0;
            Action<int> act2 = (x) => ret = x * x;
            act2(2);
            Console.WriteLine("act2(2) :: {0}", ret);

            Action<doubledouble> act3 = (x, y) =>
            {
                double d = x / y;
                Console.WriteLine("Action<t1,t2>({0},{1}) : {2}", x, y, d);
            };
            act3(100, 3);
        }       
    }
}


[결과]

오라클자바커뮤니티프로그래밍
act2(2) :: 4
Action<t1,t2>(100,3) : 33.3333333333333


[예제 2]

using System;
using System.Windows.Forms;

public delegate void ShowName();

public class Onj
{
    private string name;

    public Onj(string name)
    {
        this.name = name;
    }

    public void DisplayToConsole()
    {
        Console.WriteLine(this.name);
    }

    public void DisplayToWindow()
    {
        MessageBox.Show(this.name);
    }
}

public class Program
{
    public static void Main()
    {
        //delegate 정의  호출
        Onj onj1 = new Onj("실무개발자닷넷교육");
        ShowName act1 = onj1.DisplayToWindow;
        act1();

        //Action delegate 이용
        Onj onj2 = new Onj("오라클자바커뮤니티");
        Action act2 = onj2.DisplayToWindow;
        act2();

        //Action무명 메소드 이용
        Onj onj3 = new Onj("오라클자바커뮤니티프로그래밍");
        Action act3 = delegate()
        {
            onj3.DisplayToWindow();
        };
        act3();

        //Action delegate 람다식 이용
        Onj onj4 = new Onj("onjprogramming");
        Action act5 = () => onj4.DisplayToWindow();
        act5();
    }
}

 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷…오라클자바…12-272554
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-111863
53 [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… 오라클자바…03-151674
52 [주말]C#,ASP.NET마스터 오라클자바…01-311768
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-312543
50 [평일주간야간,주말]C기본&자료구조,알고리즘 오라클자바…01-311402
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… 오라클자바…01-191710
48 [평일야간,주말]안드로이드개발자과정(Android기초실무) 오라클자바…01-111592
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032109
46 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷… 오라클자바…12-272554
45 [평일주간]NoSQL,MongoDB,빅데이터기초과정 오라클자바…12-191820
44 [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… 오라클자바…12-141803
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-111863
42 [평일주간]빅데이터하둡기초과정(BigData Hadoop) 오라클자바…12-091462
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011689
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-011862
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011338

댓글 없음:

댓글 쓰기