[ C# ] Action 과 Func
2024. 3. 13. 00:07ㆍC#/구문
Action 대리자
리턴 값이 없는 함수를 참조하는 delegate(대리자)이다.
System namespace에서 기본적으로 제공되는 대리자 중 하나로
기존의 delegate와는 다르게 별도의 namespace에서 명시하지 않고 직접 사용할 수 있다.
Action은 매개변수의 수에 따라 0개에서 부터 16개의 매개변수를 받아들이는 delegate가 있다.
즉, 0개 : Action delegate, 1개 : Action<T> delegate, 2개 : Action<T1, T2> delegate, 3개 : Action<T1, T2, T3> delegate ....
이런 형식의 파라미터가 있는 Action delegate가 존재한다.
이렇게 Action 대리자는 여러 특징들을 가지고 있지만 우리가 가장 중요하게 봐야하는 것은
처음에 언급한 리턴 값이 없다는 점이다.
예시
using System;
using System.Windows.Forms;
public class Name
{
private string instanceName;
public Name(string name)
{
this.instanceName = name;
}
public void DisplayToConsole()
{
Console.WriteLine(this.instanceName);
}
public void DisplayToWindow()
{
MessageBox.Show(this.instanceName);
}
}
public class testTestDelegate
{
public static void Main()
{
Name testName = new Name("Koani");
Action showMethod = testName.DisplayToWindow;
// 액션 delegate 선언
// 리턴 값이 없는 DisplayToWindow 함수를 참조하고 있다.
showMethod();
}
}
Func 대리자
리턴 값을 반환하는 함수를 참조하는 대리자이다.
Action과 유사한 특징을 가지고 있어 별도의 명시 없이 사용할 수 있다.
또한 Action 대리자와 마찬가지로 0개에서 부터 16개의 까지의 매개변수를 받아들이는 delegate가 존재한다.
예시
public class MyClass
{
public static int GetNumber()
{
return 42;
}
public static string ToString(int number)
{
return "Number: " + number;
}
}
public class MainClass
{
public static void Main()
{
Func<int> numberFunc = MyClass.GetNumber;
int number = numberFunc();
Console.WriteLine("Number: " + number);
Func<int, string> toStringFunc = MyClass.ToString;
string result = toStringFunc(42);
Console.WriteLine(result);
}
}
'C# > 구문' 카테고리의 다른 글
[ C# ] 메서드 매개 변수 ref, in, out (0) | 2024.03.27 |
---|---|
[ C# ] 리스트(List) (0) | 2024.03.13 |
[ C# ] 예외 처리 (0) | 2024.03.11 |
[ C# ] foreach 문 (0) | 2024.03.04 |