일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 |
- 프로젝트오일러
- coursera
- https
- codility
- 알고리즘
- 인디게임
- flask
- Project Euler
- 워킹데드
- 게임
- C#
- django
- 퍼즐게임
- certbot
- Python
- 우분투
- API
- AWS
- github
- 스팀
- FPS
- 블라디보스토크
- lambda
- 먹방
- pycon
- 그래픽노블
- 중국맛집
- 몽골여행
- 컴퓨터네트워크
- 파이썬
- Today
- 134
- Total
- 324,498
YUDA't
[C#] 델리게이터(delegate)와 람다(lambda) 본문
* 델리게이터
0. 메서드를 변수로 사용하는 개념(메서드를 대신 호출해준다. 메서드의 대리인)
1. 일종의 클래스를 선언하는 것과 같다.
delegate noid TestDelegate(); //자료형 선언
TestDelegate testDelegate = <메서드 이름, 무명 델리게이터, 람다> //델리게이터 변수를 초기화
* 무명 델리게이터
0. 델리게이터와 같은 기능을 수행하지만 메서드를 따로 선언하지 않고도 정렬 방법을 정의한다.
delegate(<매개변수>, <매개변수>)
{
/* 코드 */
return /* 반환 */;
}
* 람다
0. 매개변수의 자료형을 지정할 필요도 없이 사용한다.
(<매개변수>, <매개변수>) => {
/* 코드 */
return /* 반환 */;
}
1. 만약 입력할 코드가 없고 반환만 한다면 더 짧게도 구현 가능하다.
(a, b) => /* 반환 */
products.Sort((a, b) => a.Price.CompareTo(b.Price));
* 델리게이터 선언
0. 이름있는 델리게이터는 특정한 형식을 가진 메서드를 자료형으로 선언
[접근 제한자] delegate [반환형] [델리게이터 이름]([매개변수]);
1. 델리게이터는 자료형이므로 클래스를 선언하는 위치와 같은 위치라면 어디든지 선언 가능하다.
2. 델리게이터는 클래스 외부에서도 선언 가능하다.
* 델리게이터 초기화
0. 메서드 이름을 사용한 초기화
TestDelegate delegateA = TestMethod;
1. 무명 델리게이터를 사용한 초기화
TestDelegate delegateB = delegate(){};
2. 람다를 이용한 초기화
TestDelegate delegateC = () => {};
3. 초기화한 델리게이터들은 일반 메서드처럼 호출해서 사용할 수 있다.
delegateA();
delegateB();
delegateC();
* 델리게이터 활용
0. 델리게이터를 활용하는 대표적인 형태는 콜백 메서드(Callback Method)이다.
1. 콜백 메서드는 매개변수로 전달하는 메서드이다.
'개발 > 기타' 카테고리의 다른 글
[Github] Visual Studio Code 연동하기 (0) | 2016.11.07 |
---|---|
[Github] SSH key 등록 및 커밋 (0) | 2016.11.07 |
[C#] 인터페이스(interface) (0) | 2016.06.07 |
[C#] 제네릭(Generic)과 구조체(Struct) (0) | 2016.06.05 |
[C#] 상속과 다형성 (0) | 2016.06.05 |