데이터 타입을 확정하지 않고 일반화하여 제네릭 클래스나 메서드를 사용하는 곳에서 지정한 타입으로 사용이 가능하게 한 형식 매개변수이다.
- 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다.
- 컴파일 타임에 타입 체크를 수행하기 때문에 런타임 에러를 줄일 수 있다.
- 여러 데이터 타입에서도 동일한 코드를 재사용하는 등 코드의 재사용성, 유연성 높아진다.
람다식(Lambda Expression)이 무엇인지 설명해주세요.
익명 함수를 정의하여 사용할 수 있도록 하는 방법으로 람다식을 통해 익명성, 간결성, 유연성, 가독성을 높일 수 있다. 함수를 매개변수로 전달하거나 즉시 실행해야 하는 경우에 유용하다.
(parameter) => expression(실행할 코드 블럭)의 형태로 구현한다.
람다식은 LINQ에서 많이 사용된다. LINQ에서 데이터를 필터링하거나 변환할 때 람다식을 사용하여 직관적이고 간결한 코드를 작성할 수 있다. 그 외, 델리게이트, 이벤트 처리, 고차 함수와 함께 사용된다.
매개변수 타입을 명시적으로 작성하지 않아도 컴파일러가 타입을 추론한다.
단점 : 익명 함수로 이름이 없기 때문에 디버깅이 복잡해 질 수 있다.
복잡한 로직에 부적합하다. 람다식은 코드를 간결화하지만 여러 줄의 코드나 복잡한 조건이 포함된 경우 가독성을 떨어뜨리고 유지보수를 어렵게 할 수 있다.
타입 안정성 문제. 람다식은 컴파일러가 매개변수의 타입을 추론할 수 있지만, 일부 상황에서는 타입 추론이 올바르지 않거나 명확하지 않을 수 있다.
익명함수라서 동일한 로직을 여러 곳에서 사용할 경우, 코드의 중복이 발생한다.
람다식을 남용하거나 복잡하게 사용할 경우 가독성이 떨어질 수 있다.
LINQ란 무엇인가요?
LINQ(Language Integrated Query)는 C#과 같은 .NET 언어에서 데이터 소스에 대해 쿼리를 수행할 수 있도록 하는 기술 집합이다. 여기서 쿼리는 데이터를 검색하고 제어하기 위해 데이터베이스나 정보 시스템에 요청하는 명령어라고 할 수 있다.
데이터를 필터링, 정렬, 그룹화하는 강력한 기능을 제공하고, 다양한 유형의 데이터 소스에 대해 동일한 쿼리를 사용할 수 있다.
데이터 소스를 정의하고 쿼리 생성, 쿼리 실행의 구조를 갖는다. 람다 식과 함께 사용하여 간결하게 작성할 수 있다.
리플렉션(Reflection)이 뭔지, 사용을 해봤다면 어떤 이유에서 사용했는지 설명해주세요.
리플렉션(Reflection)은 런타임 중 어떤 타입의 내용을 확인하거나 검사하려는 경우에 사용되는 기능이다. 타입의 내용은 메서드, 프로퍼티 등이 있다.
리플렉션은 주로 디버깅 또는 런타임에 알 수 없는 객체의 동작을 분석하기 위해 사용하거나 외부 라이브러리에 존재하는 클래스 및 메서드를 분석하는 목적으로 사용된다. (테스트 및 디버그 목적으로 사용)
GetType, GetMethods, GetProperties 등의 메서드가 있다.
- 단점 : 성능 오버헤드와 보안 위험