c#에서는 여러 종류의 델리게이트가 있습니다.
delegate는 메서드를 매개변수로 전달하거나, 이벤트와 연결하거나, 코드 블록을 생성하는 데 사용할 수 있습니다.
마찬가지로 Action Func Predicate도 델리게이트의 종류이며 각각의 차이점이 있습니다.
1.Action
Action은 메서드의 return값이 없는 void 형식일 때 해당 메서드를 지정하여 사용이 가능하며 파라미터를 지정하지 않아도 사용이 가능한 점 이 특징입니다.
// Action = void
Action printAction = ActionMethod;
printAction();
public void ActionMethod()
{
Console.WirteLine("매개변수 없어도 됨");
}
2.Func
Func는 매개변수와 리턴 값이 있는 메서드를 델리게이트로 참조할때 사용 가능한 기능입니다. <>의 맨 뒤에는 리턴 타입이 지정되며 그앞에 선언되는 타입은 매개변수의 타입으로 지정 됩니다.
//앞은 매개변수 형식 정의, 맨 마지막은 반환 형식 정의
Func<string,string> printFunc = FuncMethod;
Console.WriteLine(printFunc("func").ToString());
public string FuncMethod(string msg)
{
return msg+"는 반환 형식이 있음";
}
3.Predicate
Predicate는 Func와 마찬가지로 리턴타입과 매개변수가있으나 매개변수로는 한개만 지정 할 수 있으며 무조건 bool타입으로 만 return되어야 합니다. Func에서도 bool타입 리턴을 사용 할 수 있으나 bool타입에 관한 리턴은 Predicate를 사용하는것이 가독성 측면에서 더 이점이 있습니다.
//bool형 리턴 매개변수 인수는 하나여야 함
Predicate<int> printPredicate = PredicateMethod;
Console.WrtieLine(printPredicate(10).ToString());
public bool PredicateMethod(int count)
{
if (count > 1)
return true;
else
return false;
}
'c#' 카테고리의 다른 글
c# 문법 ref out 키워드의 차이점 (0) | 2023.06.22 |
---|---|
C# 문법 Linq 링큐 알아보기 (0) | 2023.06.04 |
ASP.Net Core MVC Entity Frame work 사용하기 -1 (0) | 2023.04.17 |
C# visual studio 파일을 여는 중 무한 로딩 해결 방법 (1) | 2023.04.12 |
WPF Gird panel 사용법 (0) | 2023.03.23 |