반응형
# 근데 델리게이트를 왜 쓰지?
원래 함수를 파라미터로 보내기 위해서는 함수의 리턴 값을 보내야 한다.
근데; 함수를 각각 값을 받아서 변수를 할당해서 보내기에는...
코드가 복잡해진다! 그래서 말 그대로 대리자라는 것을 만들어 함수를 대리하게 만들어 사용한다.
이게 가장 큰 이유.
# 이해를 위한 추가 델리게이트 정리 자료
class Program
{
static void Main(string[] args)
{
new Program().Test();
}
// 1.
// 델리게이트 대상이 될 어떤 메서드1
int StringToInt(string s)
{
return int.Parse(s);
}
// 델리게이트 대상이 될 어떤 메서드2
int StringToInt2(string s)
{
return int.Parse(s);
}
// 델리게이트 정의
delegate int MyDelegate(string str);
// 제일 중요한 건, 델리게이트의 대상이 될 메서드와
// 1.파라미터 갯수, 2.매개변수 타입, 3.리턴 타입,
// 이 모두 일치해야 사용 가능.
// 델리게이트를 전달 받을 메서드
void Run(MyDelegate m)
// 델리게이트 타입의 매개변수를 파라미터로 설정
{
int i = m("123");
// 델리게이트에 값 전달
Console.WriteLine(i);
}
// 전체 실행 관리 클래스
void Test()
{
//델리게이트 객체 생성
MyDelegate callback = new MyDelegate(StringToInt);
// 매개변수로 원하는 메서드를 집어 넣음.
//델리게이트 객체를 메서드로 전달
Run(callback);
}
}
728x90
'Programming > C# - Window' 카테고리의 다른 글
C#/ LINQ(language integrated query) (0) | 2023.06.29 |
---|---|
C#/ 람다(lambda) (0) | 2023.06.29 |
C#/ 예외 처리(try, catch, finally) (0) | 2023.06.28 |
C#/ 일반화(generic), 인덱서(indexer)k (0) | 2023.06.28 |
C#/ 컬렉션(collection)·[ArrayList, Queue, Stack, Hashtable]k (0) | 2023.06.28 |