|
## **Delegate**
|
|
## **Delegate**
|
|
|
|
---
|
|
|
|
|
|
**Delegate**는 Method를 참조하는 형식이다. **Delegate**에 매개변수와 반환 형식을 정의하고, 이와 같은 구성의 Method를 할당하여 대신 호출해 주는 역할을 한다.
|
|
**Delegate**는 Method를 참조하는 형식이다. **Delegate**에 매개변수와 반환 형식을 정의하고, 이와 같은 구성의 Method를 할당하여 대신 호출해 주는 역할을 한다.
|
|
|
|
|
|
```
|
|
```
|
... | @@ -56,6 +58,8 @@ myDelegate(); |
... | @@ -56,6 +58,8 @@ myDelegate(); |
|
```
|
|
```
|
|
|
|
|
|
## **Event**
|
|
## **Event**
|
|
|
|
---
|
|
|
|
|
|
**Event**는 **Delegate**와 마찬가지로 Method를 참조하는 형식이다. 클래스 내의 특정 Event가 일어났음을 외부에 알려주는 기능을 한다. **Event**에 Method를 추가/제거하여 실행될 명령들을 지정할 수 있다. **Event**는 **Delegate**와 달리 **인터페이스**에서 선언할 수 있는 특징이 있다.
|
|
**Event**는 **Delegate**와 마찬가지로 Method를 참조하는 형식이다. 클래스 내의 특정 Event가 일어났음을 외부에 알려주는 기능을 한다. **Event**에 Method를 추가/제거하여 실행될 명령들을 지정할 수 있다. **Event**는 **Delegate**와 달리 **인터페이스**에서 선언할 수 있는 특징이 있다.
|
|
|
|
|
|
```
|
|
```
|
... | @@ -108,6 +112,8 @@ math.excute(2); |
... | @@ -108,6 +112,8 @@ math.excute(2); |
|
```
|
|
```
|
|
|
|
|
|
## **Lambda**
|
|
## **Lambda**
|
|
|
|
---
|
|
|
|
|
|
**Lambda**는 **Delegate**보다 더 간편하게 **Anonymous Method**를 정의할 수 있는 표현식이다.
|
|
**Lambda**는 **Delegate**보다 더 간편하게 **Anonymous Method**를 정의할 수 있는 표현식이다.
|
|
|
|
|
|
```
|
|
```
|
... | @@ -194,10 +200,10 @@ Action <T1, T2, …, T16> |
... | @@ -194,10 +200,10 @@ Action <T1, T2, …, T16> |
|
```
|
|
```
|
|
```
|
|
```
|
|
Action<int, int> birthday = (month, day) =>
|
|
Action<int, int> birthday = (month, day) =>
|
|
{
|
|
{
|
|
DateTime date = new DateTime(DateTime.Now.Year, month, day);
|
|
DateTime date = new DateTime(DateTime.Now.Year, month, day);
|
|
Console.WriteLine(date.ToString("yyyy년 MM월 dd일");
|
|
Console.WriteLine(date.ToString("yyyy년 MM월 dd일");
|
|
};
|
|
};
|
|
|
|
|
|
birthday(3, 20); // 출력 결과 : 2015년 03월 20일
|
|
birthday(3, 20); // 출력 결과 : 2015년 03월 20일
|
|
```
|
|
```
|
... | @@ -221,6 +227,8 @@ System.Console.WriteLine(result); // 출력 결과 : 5 |
... | @@ -221,6 +227,8 @@ System.Console.WriteLine(result); // 출력 결과 : 5 |
|
```
|
|
```
|
|
|
|
|
|
## **확장 Method**
|
|
## **확장 Method**
|
|
|
|
---
|
|
|
|
|
|
### **FirstOrDefault()**
|
|
### **FirstOrDefault()**
|
|
조건과 일치하는 요소를 검색하여 첫 번째로 나온 값을 반환한다. 단, 값이 없으면 그 형식의 기본값을 반환한다.
|
|
조건과 일치하는 요소를 검색하여 첫 번째로 나온 값을 반환한다. 단, 값이 없으면 그 형식의 기본값을 반환한다.
|
|
|
|
|
... | @@ -268,6 +276,8 @@ foreach (int item in result) |
... | @@ -268,6 +276,8 @@ foreach (int item in result) |
|
```
|
|
```
|
|
|
|
|
|
## **LINQ**
|
|
## **LINQ**
|
|
|
|
---
|
|
|
|
|
|
**LINQ(Language Integrated Query)**는 SQL의 Query를 사용해서 데이터를 조회, 가공할 수 있는 기능이다. **LINQ**는 내부적으로 `IEnumerable<T>`의 **확장 Method**를 표현한 문법이므로, `IEnumerable<T>` 형식이거나 그것을 상속한 객체에서 사용할 수 있다.
|
|
**LINQ(Language Integrated Query)**는 SQL의 Query를 사용해서 데이터를 조회, 가공할 수 있는 기능이다. **LINQ**는 내부적으로 `IEnumerable<T>`의 **확장 Method**를 표현한 문법이므로, `IEnumerable<T>` 형식이거나 그것을 상속한 객체에서 사용할 수 있다.
|
|
|
|
|
|
> System.Linq
|
|
> System.Linq
|
... | | ... | |