C# 11 새로운 기능들
다음은 C# 11에 새로 추가된 주요 기능들을 요약한 것이다. C# 11은 .NET 7와 함께 사용되는데, .NET 7은 2022년 11월 8일 출시되었다.
(새로운 기능 이외의 C#의 전반적인 기초사항은 C# 기초 문법편에 소개되어 있다.)
(새로운 기능 이외의 C#의 전반적인 기초사항은 C# 기초 문법편에 소개되어 있다.)
C# 11을 사용하기 위해서는 Visual Studio 2022 17.4 이상 버전과 .NET 7 SDK를 설치하여야 한다. .NET 7이 설치되었더라도 VS 2022 버전이 17.4 미만이면, .NET 7과 C# 11을 사용할 수 없다.
- C# 11: Raw String Literal
- C# 11: String Interpolation에서의 복수 라인 표현식
- C# 11: u8 접미어 (UTF-8 문자열 접미어)
- C# 11: Generic Math 지원
- C# 11: Generic Attribute
- C# 11: 리스트 패턴 (List Pattern)
- C# 11: 파일 로컬 타입 (file access modifier)
- C# 11: required 멤버 (required modifier)
- C# 11: Auto-default struct
- C# 11: Span<char>/ReadOnlySpan<char> 패턴 매칭
- C# 11: 확장된 nameof 사용 범위
- C# 11: nint, nuint 데이타 타입
- C# 11: ref 필드와 scoped modifier
- C# 11: lowercase 타입명 컴파일 경고
- C# 11: 향상된 method group->delegate 변환
C# 10 새로운 기능들
다음은 C# 10에 새로 추가된 주요 기능들을 요약한 것이다. C# 10은 .NET 6 에 포함되어 출시 되며, 2021년 11월 출시되었다.
C# 10을 사용하기 위해서는 Visual Studio 2022를 설치하여 사용한다. VS 2022 설치시 .NET 6는 함께 설치된다. VS 2022 설치와 관련해서는 VS 2022 설치 아티클을 참고한다.
C# 9.0 새로운 기능들
다음은 C# 9.0에 새로 추가된 주요 기능들을 요약한 것이다. C# 9.0은 .NET 5 에 포함되어 출시 되며, 2020년 11월 10일 출시되었다.
- C# 9.0: 레코드(record) 타입
- C# 9.0: init accessor
- C# 9.0: 최상위 프로그램 (Top-level Program)
- C# 9.0: 향상된 패턴 매칭 (Pattern matching)
- C# 9.0: 향상된 타겟 타이핑 (Target typing)
- C# 9.0: 공변 리턴 타입 (Covariant return type)
- C# 9.0: Native Int 타입 (nint, nuint)
[Nov 2020] C# 9.0을 사용하기 위해서는
(1) Visual Studio 2019 v16.8 이상을 설치하면, .NET 5.0을 함께 설치한다.
(2) C# 프로젝트 속성에서 Application => Target framework을 ".NET 5" 으로 설정한다. 즉, .NET 5을 지정해야 C# 9을 사용할 수 있다.
(1) Visual Studio 2019 v16.8 이상을 설치하면, .NET 5.0을 함께 설치한다.
(2) C# 프로젝트 속성에서 Application => Target framework을 ".NET 5" 으로 설정한다. 즉, .NET 5을 지정해야 C# 9을 사용할 수 있다.
VS Code에서 C# 9.0을 사용하기 위해서는
.NET 5.0을 설치하고, VS Code C# extension (by Microsoft)를 설치하면 된다.
.NET 5.0을 설치하고, VS Code C# extension (by Microsoft)를 설치하면 된다.
C# 8.0 새로운 기능들
- C# 8.0: 디폴트 인터페이스 멤버 (Default Inteface Members)
- C# 8.0: 향상된 패턴 매칭 기능 (Pattern Matching)
- C# 8.0: Nullable Reference Type
- C# 8.0: 인덱싱과 슬라이싱 (Indexing / Slicing)
- C# 8.0: 비동기 스트림 (Async Stream)
- C# 8.0: using 선언
- C# 8.0: 널 병합 할당 연산자 (Null-coalescing assignment)
- C# 8.0: 구조체(struct) 읽기 전용 멤버
- C# 8.0: 기타 기능들
C# 8.0을 사용하기 위해서는 Visual Studio 2019과 .NET Core 3.0을 설치한 후, C# 프로젝트에서 .NET Core 3.0을 선택한다. 특히, .NET Core 3.0 정식버전을 사용하기 위해서는 Visual Studio 2019 Update 16.3(혹은 그 이상)이 필요하므로, VS 2019를 최신 버전으로 업데이트하고 VS 를 재시작한 후 사용한다. C# 8.0은 .NET Framework 4.8에서 사용할 수 없다.
(주: 만약 .NET Core Preview 버전을 사용하는 경우, Visual Studio 2019의 Tools => Options 메뉴에서 Environment => Preview Features 로 이동한 후, [Use previews of the .NET Core SDK] 옵션을 선택한 후, Visual Studio를 재시작하면 된다)
(주: 만약 .NET Core Preview 버전을 사용하는 경우, Visual Studio 2019의 Tools => Options 메뉴에서 Environment => Preview Features 로 이동한 후, [Use previews of the .NET Core SDK] 옵션을 선택한 후, Visual Studio를 재시작하면 된다)
C# 7.0 새로운 기능들
- C# 7.0: 패턴 매칭
- C# 7.0: 튜플 (Tuple)
- C# 7.0: 로컬 함수 (Local Function)
- C# 7.0: out 파라미터
- C# 7.0: 자리수 분리자와 이진 리터럴
- C# 7.0: Deconstructor
- C# 7.0: ref local 과 ref return
- C# 7.0: async 커스텀 리턴 타입
- C# 7.0: 향상된 Expression-bodied 표현
- C# 7.0: throw expression
C# 6.0 새로운 기능들
- C# 6.0: 널 조건 연산자 (Null-conditional operator)
- C# 6.0: 문자열 내삽(內揷) 기능 (String Interpolation)
- C# 6.0: Dictionary Initializer
- C# 6.0: nameof 연산자
- C# 6.0: using static 문
- C# 6.0: catch/finally 블럭에서 await 사용
- C# 6.0: Exception Filter 지원
- C# 6.0: 자동 속성 초기자 (Auto-Property Initializer)
- C# 6.0: 읽기전용 자동 속성 (Getter only)
- C# 6.0: Expression-bodied member 사용