티스토리 뷰

공부기록/C#

[C#] 익명메서드, 람다, 제네릭

까르보나라매콤하게 2022. 4. 28. 11:06

7일차 

2021 / 10 / 14 

 

학습 내용 정리 

  • 무명 메서드 (익명 메서드) : 미리 정의하지 않아도 되는 메서드명이 없는 메서드 

delegate ([파라메터]) {실행 문장} 

 

  • 람다 : 무명 함수 표현, LINQ에서 많이 사용 

(입력 파라미터) => 실행식; 

(입력 파라미터) => {실행문장 블록}; 

형식유추 기능 : 델리게이트를 이용하면 타입 명시하지 않아도 전달 가능, 리턴도 생략 가능 

Delegate int Calculate(int a, int b); 

Calculate cal = (a, b) => a + b; 

 

  1. 핸들러 

this.button1.Click += new System.EventHandler(button1_Click); 

private void button1_Click(object sender, EventArgs e) 

{ 

   ((Button)sender).BackColor = Color.Red; 

} 

  1. 익명 메서드 

this.button1.Click += delegate(object sender, EventArgs e) 

{ 

   ((Button)sender).BackColor = Color.Red; 

}; 

  1. 람다식 

this.button1.Click += (sender, e) => ((Button)sender).BackColor = Color.Red; 

 

람다 안에 식이 많으면 핸들러 사용하는 것이 좋음. 

 

Func, Action 델리게이트는 닷넷 프레임워크에 기본적으로 선언되어있음. 

  • Func 델리게이트 : 결과 반환 O, in 매개변수 타입 / out 출력 타입 (out 무조건 있어야 함) 

Ex. Func<in, out> f = (x) => y; 

 

  • Action 델리게이트 : 결과 반환 X, 따라서 out 없음, void 함수 

Ex. Action a = () => Console.WriteLine(“hi”); 

 

  • 너릭 (일반화 프로그램) : 클래스를 사용하는 시점에 타입을 지정할 수 있도록 함 

T를 사용해 타입을 일반화 

.Net Generic 클래스 : 자료구조 관련 클래스들, List<T>, Dictionary<T>, LinkedList<T> 등 

 

  • 제너릭 타입 제약 

where T : 제약조건 

// T Value 타입 

class MyClass<T> where T : struct  

// T Reference 타입 

class MyClass<T> where T : class 

// T 디폴트 생성자를 가져야 함 

class MyClass<T> where T : new()  

// T MyBase 파생클래스이어야 

class MyClass<T> where T : MyBase 

// T IComparable 인터페이스를 가져야 함 

class MyClass<T> where T : IComparable 

 

  • 제너릭 메서드 : 데이터 형식을 일반화한 메서드, 사용하는 시점에 타입을 지정 

[한정자] [반환형식] 메서드 이름 <형식 매개변수> (파라메터목록) 

{ 

} 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
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 29 30
글 보관함