[면접대비] C# 심화(3)
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
특정 매개변수와 반환 타입을 가진 메서드를 참조하여 변수처럼 저장하고 호출할 수 있게 해주는 타입입니다
델리게이트도 데이터형이어서 선언을 해야한다
방법 1은 대리자 변수에 괄호를 붙여 호출하고
방법 2는 Invoke() 메서드를 명시적으로 호출하는 것입니다
하나의 대리자에 여러 메서드를 연결하는 것입니다
+= 연산자로 메서드를 추가하고 -= 연산자로 제거합니다
.NET에서 자주 사용되는 대리자 형식을 미리 정의하여 제공하는 것입니다.
| 대리자 | 설명 |
|---|---|
Action | 반환값이 없는 메서드 |
Action<T> | T 매개변수를 받고 반환값이 없는 메서드 |
Func<TResult> | 반환값이 TResult인 메서드 |
Func<T, TResult> | T 매개변수를 받고 TResult를 반환하는 메서드 |
Predicate<T> | T 매개변수를 받고 bool을 반환하는 메서드 |
별도의 메서드를 정의하지 않고 대리자에 직접 코드를 할당할 수 있는 메서드입니다
SayDelegate say = delegate()
{
Console.WriteLine("반갑습니다.");
};
익명 메서드를 간결하게 표현하여 대리자 인스턴스를 만드는 방법으로, LINQ와 함께 사용할 때 유용합니다.
식 람다는 => 뒤에 하나의 식을 작성하는 람다식이고, 문장 람다는 { } 안에 여러 문장을 작성하는 람다식입니다.
람다식이나 익명 메서드가 자신이 선언된 외부 범위의 변수를 캡처하여 해당 범위를 벗어난 이후에도 사용할 수 있게 하는 기능입니다
int factor = 2;
Func<int, int> multiplier = n => n * factor;
Console.WriteLine(multiplier(3)); // 3 * 2 = 6
factor = 10;
Console.WriteLine(multiplier(3)); // 3 * 10 = 30
여기서 factor가 캡쳐고 클로저다
콜백 함수는 다른 함수에 전달되어 특정 시점이나 조건에서 호출되는 함수입니다
게시자가 특정 상황이 발생했음을 알리면 이벤트를 구독한 구독자들의 이벤트 핸들러가 호출되도록 하는 기능입니다.
이벤트는 외부에서 할당할 수 없으며 클래스 내부에서만 사용할 수 있습니다
.NET에서 이벤트를 일관되게 처리하기 위해 EventHandler 또는 EventHandler 대리자를 사용하는 방식입니다.
여러 개의 값을 하나의 단위로 묶어서 저장하는 데이터입니다
튜플은 값 타입이라 다른 변수에 할당하면 복사본이 생성됩니다
클래스나 타입을 직접 정의하지 않고 new와 프로퍼티를 이용해 컴파일러가 자동으로 생성하도록 하는 타입입니다. LINQ 쿼리에서 데이터를 임시로 묶을 때 사용하며 반드시 var 키워드로 선언해야합니다
제네릭은 타입을 매개변수로 받아 사용하는 시점에 구체적인 타입을 지정함으로써 다양한 타입에서 코드를 재사용할 수 있도록 하는 기능입니다.
타입 매개변수에 제약 조건을 걸어 특정 조건을 만족하는 타입만 허용할 수 있습니다
리스트, 딕셔너리, 스택, 큐, 해시셋이 있습니다
열린 상속은 부모의 제네릭 타입 매개변수를 그대로 유지하며 자식 클래스에서도 타입을 나중에 지정하는 방식이고, 닫힌 상속은 부모의 제네릭 타입에 구체적인 타입을 지정하여 상속하는 방식입니다
C심화 면접 대비(4)
C심화 면접 대비(2)
C심화 개념 면접 대비(1)