C# 1.0 

VM언어이지만 Interop을 고려 

PInvoke, unsafe(pointer), delegate


c# 2.0 제네릭

c# 2.0 ?? 연산자

c# 2.0 yield return/break

c# 2.0 partial class 

- 클래스의 구현을 2개 이상으로 분리

- 자동 코드 생성의 문제점 해결!


c# 2.0 anonyumous method

- 이름 없는 메서드 정의 가능

- delegate 타입의 인자로 인라인 메서드 정의 

- 이벤트 처리기


c# 2.0  static class

- IL 코드 표현 : 상속 불가능한 추상 클래스

- C# 컴파일러 : 인스턴스 멤버 정의 불가능


1. C++의 Template과 유사

2.메서드 수준의 제네릭 지원

3. 박싱/언박싱 문제 해결

참조 형식이면 상관이 없지만, 값형식일 경우는 제너릭을 사용하는게 좋다.

4. 1) 제약1 - 상속타입 

   2) 제약2 - 값/참조 타입

   3) 제약3 - 인자 없는 생성자 필수 



c# 2.0 - Nullable 타입

.net 2.0 BCL: Nullable<T> 구조체 추가

c#의 경우 T? 형태로 단축 표기



C# 3.0 자동 구현 속성

- Field + Property 구현을 단순화

- Get/Set의 접근 제한자


C# 3.0 컬렉션 초기화

- ICollection 인터페이스를 구현한 타입

- 컬렉션의 요소를 new 구문에서 추가


C# 3.0 - LINQ

- LINQ : Language-Inegrated Query

-> 언어에 통합된 쿼리 표현식(Query Expressions)

-SQL 쿼리의 SELECT와 유사 


C# 3.0 - var 예약어

- 컴파일러가 로컬 변수의 형식을 추론

- C++ 11의 auto 예약어와 동격


C# 3.0 - 객체초기화(1)

- 공용 속성을 통해 객체 생성시에 초기화

- LINQ에 사용 anonyumous type

- 컬렉션 초기화 + 객체 초기화


C# 3.0 - 익명 타입

이름 없는 타입

- 내부적인 처리는 익명 메서드와 유사

- var 사용은 필수

- Linq Select,Join


C# 3.0 - 확장메서드

- 정적 메서드를 마치 인스턴스 메서드처럼 사용

- 결국 정적 메서드 호출

- 쿼리 구문과 메서드 기반 구문 (53분)

- WEHER

- ORDER BY


C# 3.0 람다 식

- 추론을 통해 delegate 익명 메서드 개선

- 값 반환 + 단문 메서드 -> return + 중괄호 생략

- 메서드 기반 쿼리를 단순화.

- 데이터로써의 람다 => Expression Tree

- Exptression Tree 컴파일

- SQL 쿼리를 생성

  LINQ TO SQL 실행 시 실제 쿼리로 생성이 된다.

- 사례2) 공용 속성 이름

  LINQ to...

  표준 쿼리 연산자


C# 4.0 - 선택적 매개 변수

선택적 매개변수

-C++의 디폴트 매개변수


C# 4.0 - 명명된 인자.

-인자의 이름으로 호출 측에 값 전달


C# 4.0 - dynamic 

-실행 시에 결정되는 타입

-결국엔 object 타입

-IronPython과 C#

-C#에서 IronPython 메서드 연동

'


C# 5.0 - 호출자 정보 (다시 봐야함)

C++의 3가지 메크로 상수에 대응


C# 5.0 - async-await

-마치 동기 방식처럼 비동기 호출

-사용자 정의 ...Async 메서드












'.NET 개발 > C#' 카테고리의 다른 글

C# Skia Sharp 사용해보기 (예제편) 1탄  (0) 2016.09.23
Webp C#  (0) 2016.09.23
대리자와 람다 식  (0) 2016.06.05
lambda expression  (0) 2016.06.05
공변성, 반공변성  (0) 2016.06.05
Posted by Hoya0415
,