[닷넷4.0, C#강좌]C# 델리게이트 Func delegate
하나의 익명메소드와 무명함수를 만들기 위해 매번 별개의 델리게이트를 선언해야 하는 불편함이 있다. 이 문제를 위해 MS에서는 Func, Action 델리게이트를 준비 했는데 Func 델리게이트는 결과를 반환하는 메소드를 참조하고 Action 델리게이트는 결과를 반환하지 않는 메소드를 참조한다.
Func 델리게이트는 결과를 반환하는 메소드를 참조하기 위해 만들어 졌는데 닷넷4.0 프레임워크에는 대략 17가지의 Func 델리게이트가 준비되어 있다.
public delegate TResult Func<out TResult>()
public delegate TResult Func<in T, out TResult>(T arg)
public delegate TResult Func<int T1, in T2, out TResult>(T1 arg, T2 arg)
public delegate TResult Func<int T1, in T2, in T3, out TResult>(T1 arg, T2 arg, T3 arg)
……
……
public delegate TResult Func<in T1,,,in T16, out TResult>(T1 arg, T2 arg, T3 arg,,, T16 arg)
……
public delegate TResult Func<in T1,,,in T16, out TResult>(T1 arg, T2 arg, T3 arg,,, T16 arg)
모든 Func 델리게이트의 마지막 매개변수가 반환형식 이다.
[사용 예문]
입력 매개 변수가 없는 경우…
Func<int> func = () => 10; //입력 매개변수 없으며 무조건 10 리턴
Console.WriteLine(func);
Console.WriteLine(func);
입력 매개 변수가 하나인 경우…
Func<int, int> func = (x) => x*x; //입력 매개변수는 x하나, 반환형식 int
Console.WriteLine(func(3)); //9 리턴
Console.WriteLine(func(3)); //9 리턴
[예제]
using System;
namespace Lambda
{
class Program
{
{
class Program
{
static void Main(string[] args)
{
Func<int> func1 = () => 10;
Console.WriteLine(func1());
{
Func<int> func1 = () => 10;
Console.WriteLine(func1());
Func<int, int, int> func2 = (x, y) => x + y;
Console.WriteLine("1+2={0}", func2(1,2));
Console.WriteLine("1+2={0}", func2(1,2));
}
}
}
}
}
[결과]
10
1+2=3
10
1+2=3
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주말]
[11/2]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/31]JAVA&WEB프레임워크실무과정
[11/1]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[11/2]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/31]JAVA&WEB프레임워크실무과정
[11/1]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[기타 다른 강좌는 아래 해당 카테고리를 클릭해주세요]
댓글 없음:
댓글 쓰기