프로그래밍/C#

[C#] 리플렉션 - Reflection 리플렉션은 어셈블리, 모듈 및 형식을 설명하는 개체(Type 형식)를 제공합니다. 리플렉션을 사용하면 동적으로 형식 인스턴스를 만들거나, 형식을 기존 개체에 바인딩하거나, 기존 개체에서 형식을 가져와 해당 메서드를 호출하거나, 필드 및 속성에 액세스할 수 있습니다. 코드에서 특성을 사용하는 경우 리플렉션은 특성에 대한 액세스를 제공합니다. [MSDN] 최근에 툴을 만들다가 꼭 필요한 기능에 대해서 떠올리다가 언제인가 오래전에 C# 책에서 봤던 Reflection 개념이 떠올라 사용하여 한번 작성해 보고 싶었습니다. 처음에 Reflection을 공부할때 이걸 그래서 어디다가 쓰지? 라는 생각을 많이 하였는데 막상 쓸때가 오기는 오더라구요. 사용법은 여러가지가 있는데..
event 키워드 이벤트는 대리자(delegate) 대신 사용하는 키워드는 아닙니다. C#의 특정 상황에서 동일한 방식으로 사용할 수는 있지만, 차이점을 구분하는것이 중요합니다. 이벤트를 이해하는 가장 쉬운 방법은 속성과 조금 비슷하다고 생각하는 것입니다. 속성은 필드 인 것처럼 보이지만 확실히 그렇지 않습니다. 필드를 전혀 사용하지 않는 속성을 작성할 수 있습니다. 마찬가지로 이벤트는 추가 및 제거 작업을 표현하는 방식에서 대리인 인스턴스처럼 보이지만 그렇지 않습니다. 이벤트는 메소드의 쌍으로 묶어서 메소드가 이벤트를 나타내는 지 알려줍니다. add 및 remove 작업에 각 인스턴스는 동일한 유형 (이벤트 유형)의 대리자(delegate) 인스턴스 매개 변수를 사용합니다. 이러한 작업을 수행하는 것은..
Serialization - 객체 직렬화 객체를 연속적인 데이터를 변환하는것을 말합니다. 직렬화 객체를 저장하거나 메모리, 데이터베이스 또는 파일로 전송하기 위해 바이트 스트림으로 객체를 변환하는 프로세스이며, 주된 목적으로는 필요한 경우를 다시 가능하도록하기 위해 객체의 상태를 저장합니다. 반대의 과정을 역 직렬화(Deserialization)라고합니다. System.Runtime.Serialization는 직렬화와 객체를 직렬화 복원에 필요한 클래스가 포함되어 있습니다.이 유형의 인스턴스가 직렬화 될 수 있다는 것을 나타 내기 위해 형식으로 SerializableAttribute 특성을 적용합니다. 만약 SerializableAttribute 특성이없는 경우 SerializationException ..
yield 키워드 yield 키워드는 해당 키워드가 표시되는 메서드가 반복기 블록임을 컴파일러에 나타냅니다. 컴파일러는 클래스를 생성하여 반복기 블록에 표현된 동작을 구현합니다. 반복기 블록에서 yield 키워드를 return 키워드와 함께 사용하여 열거자 개체에 값을 제공합니다. 예를 들어, 이 값은 foreach 문의 각 루프에서 반환되는 값입니다. 또한 yield 키워드를 break와 함께 사용하여 반복의 끝을 나타냅니다. 다음은 두가지 형태의 yield 문입니다. yield return ; yield break; yield return 문은 각 요소를 한 번에 하나씩 반환하기 위해 사용합니다. foreach 문 또는 LINQ 쿼리를 사용할 때 반복기 메서드를 소비합니다. foreach 루프의 각 ..
where - Generics (type parameter, 형식 제약 조건) 제네릭 클래스를 정의하는 경우 클래스를 인스턴스화할 때 클라이언트 코드에서 형식 인수에 사용할 수 있는 형식의 종류에 제약 조건을 적용할 수 있습니다. 클라이언트 코드가 제약 조건에서 허용하지 않는 형식을 사용하여 클래스를 인스턴스화하려고 하면 컴파일 타임 오류가 발생합니다. 이러한 제한을 제약 조건이라고 합니다. 제약 조건은 컨텍스트 키워드 where를 사용하여 지정합니다. 다음 표에서는 여섯 가지의 형식 제약 조건을 보여 줍니다. 제네릭 형식 정의에서 where 절은 제네릭 선언에 정의된 형식 매개 변수의 인수로 사용할 수 있는 형식에 대해 제약 조건을 지정하는 데 사용됩니다. 기본적으로 형식 제약을 하지 않는 다면, C+..
무명 메서드(Anonymous Methods) 2.0보다 이전 버전의 C#에서는 명명된 메서드를 사용하는 방법으로만 대리자를 선언할 수 있었습니다. C# 2.0에는 무명 메서드가 도입되었고 C# 3.0 이상에서는 무명 메서드 대신 람다 식을 사용하여 인라인 코드를 작성하는 방법이 더 선호됩니다. 그러나 이 항목에서 설명하는 무명 메서드에 대한 내용은 람다 식에도 적용됩니다. 무명 메서드에는 람다 식에 없는 기능이 한 가지 있습니다. 무명 메서드를 사용하면 매개 변수 목록을 생략할 수 있으며, 이는 무명 메서드가 여러 시그니처를 가진 대리자로 변환될 수 있음을 의미합니다. 무명 메서드를 사용하면 별도의 메서드를 만들 필요가 없으므로 대리자를 인스턴스화하는 데 따르는 코딩 오버헤드를 줄일 수 있습니다. [C..
IEnumerable 컬렉션을 반복하는 열거자를 반환합니다. 컬렉션을 반복하는 데 사용할 수 있는 System.Collections.IEnumerator 개체를 반환합니다. 인테페이스 이므로 다음과 같은 형식의 메서드를 반드시 정의해야합니다. 메서드 설명 IEnumerator GetEnumerator(); 요약: 컬렉션을 반복하는 열거자를 반환합니다. 반환 값: 컬렉션을 반복하는 데 사용할 수 있는 System.Collections.IEnumerator 개체입니다. IEnumerator 제네릭이 아닌 컬렉션을 단순하게 반복할 수 있도록 지원합니다. Current 을 통해 컬렉션 요소를 반환하고 MoveNext()을 통해서 반복을 지원합니다. IEnumerable 를 사용하는데 사용하는 인터페이스 입니다...
람다식 (lambda) 람다 식은 대리자 또는 식 트리 형식을 만드는 데 사용할 수 있는 익명 함수입니다. 람다 식을 사용하여 인수로 전달되거나 함수 호출 값으로 반환되는 로컬 함수를 쓸 수 있습니다. 람다 식은 LINQ 쿼리 식을 작성하는 데 특히 유용합니다. 람다 식을 만들려면 람다 연산자 => 왼쪽에 입력 매개 변수를 지정하고(있는 경우) 다른 쪽에 식이나 문 블록을 삽입합니다. 예를 들어 람다 식 x => x * x는 이름이 x인 매개 변수를 지정하고 x 제곱 값을 반환합니다. 다음 예제와 같이 대리자 형식에 이 식을 할당할 수도 있습니다. 람다식은 다음과 같이 작성 할 수 있습니다. delegate int TestDelegate(int _number); static void Main(string..
QA Engineer  - P군
'프로그래밍/C#' 카테고리의 글 목록