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<double, double> 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-27 | 2554 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1863 | ||
53 | [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… | 03-15 | 1674 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 1768 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 2543 | |
50 | [평일주간야간,주말]C기본&자료구조,알고리즘 | 01-31 | 1402 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… | 01-19 | 1710 | |
48 | [평일야간,주말]안드로이드개발자과정(Android기초실무) | 01-11 | 1592 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2109 | |
46 | [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷… | 12-27 | 2554 | |
45 | [평일주간]NoSQL,MongoDB,빅데이터기초과정 | 12-19 | 1820 | |
44 | [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… | 12-14 | 1803 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1863 | |
42 | [평일주간]빅데이터하둡기초과정(BigData Hadoop) | 12-09 | 1462 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1689 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 1862 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1338 |
댓글 없음:
댓글 쓰기