Difference between r1.2 and the current
@@ -4,10 +4,12 @@
* 점점 끝이 보이나요?
== 참가자 ==
== 진행 시간 ==
== 진행 예정 내용 ==
* 다소 중요하다고 생각된 내용은 [[HTML(<font color="#9933ff"><b>보라색 볼드(굵게)</b></font>)]] 처리하였습니다.
== 참가자 ==
* [신형철], [이승현], [박인서]
* [신형철], [이승현], [박인서], [성훈], [홍성현]
== 진행 시간 ==
* 2시 30분 ~
* 2시 30분 ~ 5시
* 6시 ~ 7시 30분
* ~~2부제~~
== 진행 예정 내용 ==
* 다소 중요하다고 생각된 내용은 [[HTML(<font color="#9933ff"><b>보라색 볼드(굵게)</b></font>)]] 처리하였습니다.
@@ -42,11 +44,58 @@
* [[HTML(<font color="#9933ff"><b>dynamic과 리플렉션</b></font>)]]
* [[HTML(<font color="#9933ff"><b>덕 타이핑(Duck typing)</b></font>)]]
== 진행 ==
=== 내용 요약 ===
==== 11. C# 3.0으로 올라서기 ====
==== 12. BCL Part.2 ====
==== 13. C# 4.0으로 올라서기 ====
=== 그 외 ===
== 덧글 ==
--------------------------------
* [[HTML(<font color="#9933ff"><b>덕 타이핑(Duck typing)</b></font>)]]
* #14. C# 6.0으로 올라서기
* [[HTML(<font color="#9933ff"><b>널 조건 연산자 (Null-conditional operator)</b></font>)]]
* [[HTML(<font color="#9933ff"><b>문자열 내삽(String interpolation)</b></font>)]]
* [[HTML(<font color="#9933ff"><b>인덱서 Dictionary 초기자</b></font>)]]
* nameof 연산자
* using static 키워드
* [[HTML(<font color="#9933ff"><b>Exception Filtering</b></font>)]]
* [[HTML(<font color="#9933ff"><b>자동 구현 속성 초기자</b></font>)]]
* [[HTML(<font color="#9933ff"><b>읽기 전용 자동 구현 속성</b></font>)]]
* [[HTML(<font color="#9933ff"><b>Expression-bodied member</b></font>)]]
=== 내용 요약 ===
==== 11. C# 3.0으로 올라서기 ====
* var를 통해 타입을 정의하면 컴파일러가 타입을 유추하도록 할 수 있다.
* 단순 접근/설정자 설정을 위해서는 자동 구현 속성 기능을 통해 편리하게 구현할 수 있다.
* 객체 초기화 기능을 통해, 클라이언트가 인스턴스의 공용 속성을 생성 시 설정하도록 할 수 있다.
* 컬렉션 초기화 기능을 통해, 컬렉션의 초기 구성 요소를 생성 시 구성할 수 있다.
* 익명 타입을 통해, 일시적으로 데이터를 담아놓을 타입을 생성할 수 있다.
* 부분 메서드 기능을 이용하면 메서드를 여러 곳에 분산하여 작성할 수 있다.
* 확장 메서드 기능을 통해 상속 없이도 클래스의 지원 메서드를 확장할 수 있다.
* 람다 식은 익명 메서드 대용이나 식 자체로 사용된다.
* BCL에는 람다 식 이용에 필요한 델리게이트들이 미리 선언되어 있다.
* Enumerable 정적 클래스에는 컬렉션 지원을 위한 확장 메서드가 여러 정의되어 있고, 대개는 람다 식을 이용한다.
* 람다 식을 식 트리 용도로 사용하면 동적으로 코드를 생성하는 등의 기능이 가능하다.
* LINQ 기능이 지원된 이후로 컬렉션 개체에 쿼리 문을 사용할 수 있다.
* LINQ 쿼리 반환 타입을 이용하여 쿼리 문에 대한 지연 연산을 이끌어 낼 수도 있다.
* 리플렉션을 이용하면 닷넷 프로세스 내에 저장된 메타데이터를 이용할 수 있다.
* AppDomain은 CLR이 만들어낸 격리 공간으로, 안에는 로드된 어셈블리들이 존재한다.
* 리플렉션을 통해, AppDomain - Module - Type - Method 계층 구조에 접근할 수 있다.
* 리플렉션을 통해 타입에 간접적으로 접근하여 메서드를 호출하거나 인스턴스를 생성하는 것을 느슨한 코드 결합이라고 한다.
* 리플렉션을 이용하여 플러그인등의 기능을 지원할 수 있다.
* 제네릭 타입 매개변수에 out/in의 키워드를 이용하여 제네릭 타입 간 형변환을 지원할 수 있다.
* 선택적 매개변수를 통해 매개변수에 기본값을 할당할 수 있으며, 명명된 인자를 통해 선택적으로 인자에 값을 넣을 수 있다.
* dynamic 예약어를 이용하면 C#에서 동적 타입을 이용하듯이 사용할 수 있다.
* dynamic을 이용하면 리플렉션 관련 코드를 깔끔하게 줄여 사용할 수 있다.
* 어느 한 기능이 지원될 때, 두 인스턴스가 같은 종류의 인스턴스로 보는 관점을 덕 타이핑이라 한다.
==== 14. C# 6.0으로 올라서기 ====
* 널 조건 연산자를 통해 Null 값에 대한 조건 처리 후 코드 실행 과정을 간략화시킬 수 있다.
* 문자열 내삽 기능을 통해 formatting이나 문자열 연결 없이도 변수값을 문자열 내에 넣을 수 있다.
* 인덱서를 구현한 개체에 대해 객체 초기화 시 인덱서 초기자 기법을 사용할 수 있다.
* nameof 연산자를 통해 어떤 필드, 클래스등의 이름을 하드코딩하지 않고도 알아낼 수 있다.
* using static 키워드를 통해 정적 필드 사용 시 클래스 이름을 생략하도록 할 수 있따.
* Exception Filtering 기능을 통해 특정 상황에서만 예외를 처리하도록 제한할 수 있다.
* C# 6.0부터는 자동 구현 속성에도 초기 값을 설정할 수 있으며, 읽기 전용으로 구성하는 것도 가능하다.
* 클래스 내 길이가 짧은 속성, 메서드들은 하나의 람다 표현식으로 정의가 가능하다.
== 덧글 ==
--------------------------------
4. 진행 예정 내용 ¶
- 다소 중요하다고 생각된 내용은 보라색 볼드(굵게) 처리하였습니다.
- #11. C# 3.0으로 올라서기
- 타입 추론(Type Inference), var 예약어
- 자동 구현 속성(Auto-Implemented Property)
- 객체 초기화, 컬렉션 초기화
- 익명 타입
- 부분 메서드
- 확장 메서드(Extension Method)
- 람다 식(Lambda Expression)
- 람다 지원 델리게이트, Action, Func, Predicate
- Enumerable 정적 클래스와 람다 식, 컬렉션
- 식 트리로 사용되는 람다 식
- LINQ(Language-integrated Query)
- LINQ와 from-in, where, group-by
- 지연 연산(Lazy Evaluation)
- 타입 추론(Type Inference), var 예약어
- #12. BCL Part.2
- 메타데이터와 리플렉션
- AppDomain
- 리플렉션을 통한 어셈블리/모듈/타입/메서드 접근
- 리플렉션과 코드 결합
- 리플렉션과 플러그인(Plug-in)
- 메타데이터와 리플렉션
- #13. C# 4.0으로 올라서기
- 제네릭 타입 매개변수에 대한 Covariance/Contravariance
- 선택적 매개변수(Optional Parameter)와 명명된 인자(Named Argument)
- 닷넷 프레임워크 속 DLR
- dynamic 예약어
- dynamic과 리플렉션
- 덕 타이핑(Duck typing)
- 제네릭 타입 매개변수에 대한 Covariance/Contravariance
- #14. C# 6.0으로 올라서기
- 널 조건 연산자 (Null-conditional operator)
- 문자열 내삽(String interpolation)
- 인덱서 Dictionary 초기자
- nameof 연산자
- using static 키워드
- Exception Filtering
- 자동 구현 속성 초기자
- 읽기 전용 자동 구현 속성
- Expression-bodied member
- 널 조건 연산자 (Null-conditional operator)
5.1.1. 11. C# 3.0으로 올라서기 ¶
- var를 통해 타입을 정의하면 컴파일러가 타입을 유추하도록 할 수 있다.
- 단순 접근/설정자 설정을 위해서는 자동 구현 속성 기능을 통해 편리하게 구현할 수 있다.
- 객체 초기화 기능을 통해, 클라이언트가 인스턴스의 공용 속성을 생성 시 설정하도록 할 수 있다.
- 컬렉션 초기화 기능을 통해, 컬렉션의 초기 구성 요소를 생성 시 구성할 수 있다.
- 익명 타입을 통해, 일시적으로 데이터를 담아놓을 타입을 생성할 수 있다.
- 부분 메서드 기능을 이용하면 메서드를 여러 곳에 분산하여 작성할 수 있다.
- 확장 메서드 기능을 통해 상속 없이도 클래스의 지원 메서드를 확장할 수 있다.
- 람다 식은 익명 메서드 대용이나 식 자체로 사용된다.
- BCL에는 람다 식 이용에 필요한 델리게이트들이 미리 선언되어 있다.
- Enumerable 정적 클래스에는 컬렉션 지원을 위한 확장 메서드가 여러 정의되어 있고, 대개는 람다 식을 이용한다.
- 람다 식을 식 트리 용도로 사용하면 동적으로 코드를 생성하는 등의 기능이 가능하다.
- LINQ 기능이 지원된 이후로 컬렉션 개체에 쿼리 문을 사용할 수 있다.
- LINQ 쿼리 반환 타입을 이용하여 쿼리 문에 대한 지연 연산을 이끌어 낼 수도 있다.
5.1.3. 13. C# 4.0으로 올라서기 ¶
- 제네릭 타입 매개변수에 out/in의 키워드를 이용하여 제네릭 타입 간 형변환을 지원할 수 있다.
- 선택적 매개변수를 통해 매개변수에 기본값을 할당할 수 있으며, 명명된 인자를 통해 선택적으로 인자에 값을 넣을 수 있다.
- dynamic 예약어를 이용하면 C#에서 동적 타입을 이용하듯이 사용할 수 있다.
- dynamic을 이용하면 리플렉션 관련 코드를 깔끔하게 줄여 사용할 수 있다.
- 어느 한 기능이 지원될 때, 두 인스턴스가 같은 종류의 인스턴스로 보는 관점을 덕 타이핑이라 한다.
5.1.4. 14. C# 6.0으로 올라서기 ¶
- 널 조건 연산자를 통해 Null 값에 대한 조건 처리 후 코드 실행 과정을 간략화시킬 수 있다.
- 문자열 내삽 기능을 통해 formatting이나 문자열 연결 없이도 변수값을 문자열 내에 넣을 수 있다.
- 인덱서를 구현한 개체에 대해 객체 초기화 시 인덱서 초기자 기법을 사용할 수 있다.
- nameof 연산자를 통해 어떤 필드, 클래스등의 이름을 하드코딩하지 않고도 알아낼 수 있다.
- using static 키워드를 통해 정적 필드 사용 시 클래스 이름을 생략하도록 할 수 있따.
- Exception Filtering 기능을 통해 특정 상황에서만 예외를 처리하도록 제한할 수 있다.
- C# 6.0부터는 자동 구현 속성에도 초기 값을 설정할 수 있으며, 읽기 전용으로 구성하는 것도 가능하다.
- 클래스 내 길이가 짧은 속성, 메서드들은 하나의 람다 표현식으로 정의가 가능하다.