C #의 올바른 버전 번호는 무엇입니까?

Oct 30 2008

C #의 올바른 버전 번호는 무엇입니까? 언제 나왔습니까? C # 3.5에 대한 답변을 찾을 수없는 이유는 무엇 입니까?

이 질문은 주로 C # 3.5 와 같이 잘못된 버전 번호를 사용하여 답변을 검색하는 사람들을 돕기위한 것 입니다. 잘못된 버전 번호로 답을 찾지 못한 사람은 질문을 찾은 다음 올바른 버전 번호로 다시 검색하기를 바랍니다.

답변

2946 JonSkeet Oct 30 2008 at 00:10

C # 언어 버전 기록 :

이 글을 쓰는 시점에 알려진 C # 버전은 다음과 같습니다.

  • .NET 1.0 및 VS2002와 함께 릴리스 된 C # 1.0 (2002 년 1 월)
  • C # 1.2 (이상하게도 충분 함); .NET 1.1 및 VS2003 (2003 년 4 월)과 함께 출시되었습니다. 를 구현 한를 호출 Dispose하는 첫 번째 버전 입니다. 몇 가지 다른 작은 기능.IEnumeratorIDisposable
  • .NET 2.0 및 VS2005와 함께 릴리스 된 C # 2.0 (2005 년 11 월). 주요 새 기능 : 제네릭, 익명 메서드, nullable 형식, 반복기 블록
  • .NET 3.5 및 VS2008과 함께 릴리스 된 C # 3.0 (2007 년 11 월). 주요 새 기능 : 람다 식, 확장 메서드, 식 트리, 익명 형식, 암시 적 형식 지정 ( var), 쿼리 식
  • .NET 4 및 VS2010 (2010 년 4 월)과 함께 릴리스 된 C # 4.0 . 주요 새로운 기능 : 후기 바인딩 ( dynamic), 델리게이트 및 인터페이스 일반 분산, 더 많은 COM 지원, 명명 된 인수, 튜플 데이터 유형 및 선택적 매개 변수
  • .NET 4.5 및 VS2012 (2012 년 8 월)와 함께 릴리스 된 C # 5.0 . 주요 기능 : 비동기 프로그래밍, 발신자 정보 속성. 브레이킹 체인지 : 루프 변수 클로저 .
  • .NET 4.6 및 VS2015 (2015 년 7 월)와 함께 릴리스 된 C # 6.0 . Roslyn에 의해 구현되었습니다 . 기능 : 자동으로 구현 된 속성에 대한 이니셜 라이저, 지시문을 사용하여 정적 멤버, 예외 필터, 요소 이니셜 라이저, awaitin catchand finally, Add컬렉션 이니셜 라이저의 확장 메서드 를 가져옵니다 .
  • .NET 4.7 및 VS2017과 함께 릴리스 된 C # 7.0 (2017 년 3 월). 주요 새로운 기능 : 튜플 , 참조 지역 및 참조 반환 , 패턴 일치 (패턴 기반 스위치 문 포함), 인라인 out매개 변수 선언 , 로컬 함수 , 이진 리터럴, 숫자 구분 기호 및 임의의 비동기 반환 .
  • VS2017 v15.3 (2017 년 8 월)과 함께 릴리스 된 C # 7.1 새로운 기능 : async main , tuple member name inference , default expression , pattern matching with generics .
  • VS2017 v15.5와 함께 릴리스 된 C # 7.2 (2017 년 11 월) 새로운 기능 : private protected access modifier , Span , aka interior pointer, aka stackonly struct , 기타 모든 것 .
  • VS2017 v15.7 (2018 년 5 월)과 함께 릴리스 된 C # 7.3 . 새로운 기능 : 열거 형, 대리자 및 unmanaged제네릭 형식 제약 . ref재 할당. 안전하지 않은 개선 사항 : stackalloc초기화, 고정되지 않은 인덱싱 된 fixed버퍼, 사용자 지정 fixed문. 오버로딩 해상도가 향상되었습니다. 이니셜 라이저 및 쿼리의 식 변수. ==!=튜플에 대해 정의. 이제 자동 속성의 지원 필드를 속성으로 타겟팅 할 수 있습니다.
  • .Net Core 3.0 및 VS2019 v16.3 (2019 년 9 월)과 함께 릴리스 된 C # 8.0 . 주요 새로운 기능 : nullable 참조 유형 , 비동기 스트림 , 인덱스 및 범위 , 읽기 전용 멤버 , 선언 사용 , 기본 인터페이스 메서드 , 정적 로컬 함수 및 보간 된 축어 문자열 향상 .
  • .Net 5.0 및 VS2019 v16.8 (2020 년 11 월)과 함께 릴리스 된 C # 9.0 . 주요 새 기능 : init 전용 속성 , 레코드 , with-expressions , 데이터 클래스, 위치 레코드, 최상위 프로그램 , 개선 된 패턴 일치 (단순 유형 패턴, 관계형 패턴, 논리 패턴), 개선 된 대상 유형 (대상 유형 new표현식, 타겟 유형 ???), 공변 반환. 사소한 기능 : 정렬 refpartial수정 자 완화 , 매개 변수 null 검사, 람다 폐기 매개 변수, 네이티브 int, 로컬 함수의 속성, 함수 포인터, 정적 람다, 확장 GetEnumerator, 모듈 이니셜 라이저, 부분 확장.

OP의 질문에 대한 답변 :

C #의 올바른 버전 번호는 무엇입니까? 언제 나왔습니까? C # 3.5에 대한 답변을 찾을 수없는 이유는 무엇입니까?

C # 3.5와 같은 것은 없습니다. 혼동의 원인은 C # 3.0이 .NET 3.5에 존재하기 때문입니다. 언어와 프레임 워크는 독립적으로 버전이 지정되지만 CLR과 마찬가지로 .NET 2.0부터 3.5까지의 버전 2.0, CLR 4.0을 도입 한 .NET 4 서비스 팩에도 불구하고 버전이 있습니다. .NET 4.5의 CLR은 여러 가지 개선 사항이 있지만 버전 관리가 명확하지 않습니다. 일부 지역에서는 CLR 4.5 (예를 들어이 MSDN 페이지에서 이러한 방식으로 참조하는 데 사용됨)라고 할 수 있지만 Environment.Version속성은 여전히 ​​4.0을보고합니다. 트리플 엑스.

2017 년 5 월 3 일부터 C # 언어 팀은 GitHub 리포지토리에 C # 버전 및 기능에 대한 기록을 만들었습니다. 기능은 C # 언어 버전에 추가되었습니다 . 향후 및 최근에 구현 된 언어 기능을 추적하는 페이지 도 있습니다 .

347 nawfal Jul 21 2016 at 21:14

이것은 여기의 대부분의 답변과 동일하지만 쉽게 표로 작성되었으며 완성도를 위해 Visual Studio.NET 버전이 있습니다.

╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗
║ C# version ║ VS version ║ .NET version ║ CLR version ║ Release date ║
╠════════════╬════════════╬══════════════╬═════════════╬══════════════╣
║    1.0     ║    2002    ║    1.0       ║     1.0     ║   Feb 2002   ║
║    1.2     ║    2003    ║    1.1       ║     1.1     ║   Apr 2003   ║
║    2.0     ║    2005    ║    2.0       ║     2.0     ║   Nov 2005   ║
║            ║            ║    3.0       ║     2.0     ║   Nov 2006   ║
║    3.0     ║    2008    ║    3.5       ║     2.0     ║   Nov 2007   ║
║    4.0     ║    2010    ║    4.0       ║     4       ║   Apr 2010   ║
║    5.0     ║    2012    ║    4.5       ║     4       ║   Aug 2012   ║
║    5.0     ║    2013    ║    4.5.1     ║     4       ║   Oct 2013   ║
║            ║            ║    4.5.2     ║     4       ║   May 2014   ║
║    6.0     ║    2015    ║    4.6       ║     4       ║   Jul 2015   ║
║            ║            ║    4.6.1     ║     4       ║   Nov 2015   ║
║            ║            ║    4.6.2     ║     4       ║   Aug 2016   ║
║    7.0     ║    2017    ║              ║             ║   Mar 2017   ║
║            ║            ║    4.7       ║     4       ║   May 2017   ║
║    7.1     ║ 2017(v15.3)║              ║             ║   Aug 2017   ║
║            ║            ║    4.7.1     ║     4       ║   Oct 2017   ║
║    7.2     ║ 2017(v15.5)║              ║             ║   Dec 2017   ║
║            ║            ║    4.7.2     ║     4       ║   Apr 2018   ║
║    7.3     ║ 2017(v15.7)║              ║             ║   May 2018   ║
║    8.0     ║    2019    ║    4.8       ║     4       ║   Apr 2019   ║
║    9.0     ║ 2019(v16.8)║    5.0^      ║     ^^      ║   Nov 2020   ║ 
╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝

^-.NET 5.0은 .NET 프레임 워크의 최신 버전이 아니라 .NET Core 3입니다. .NET 5.0부터는 .NET 전체 프레임 워크의 최신 버전이 없습니다.

^^- .NET Core에 대한 별도의 CLR (CoreCLR) 버전은 없습니다. .NET Core 버전이 무엇이든 CoreCLR 버전입니다. 그래서 그것을 언급하지 않습니다.


참고 : .NET 개발은 요즘 VS와 거의 독립적이며 각 버전 간에는 상관 관계가 없습니다.
자세한 내용은 " .NET Framework 버전 및 종속성 "을 참조하십시오.

307 BryanRehbein Nov 25 2008 at 23:10

C #의 버전 번호를 처리 할 때 가장 큰 문제는 Visual Studio와 .NET Framework 간의 동기화 된 릴리스로 인해 나타나는 .NET Framework 버전에 연결되어 있지 않다는 사실입니다.

C # 버전은 실제로 프레임 워크가 아닌 컴파일러에 바인딩됩니다. 예를 들어 Visual Studio 2008에서는 C # 3.0을 작성하고 .NET Framework 2.0, 3.0 및 3.5를 대상으로 지정할 수 있습니다. C # 3.0 명명법은 ANSI C89, C90, C99 가 C의 코드 구문 / 기능을 설명하는 것과 동일한 방식으로 코드 구문 및 지원되는 기능의 버전을 설명합니다.

Mono를 살펴보면 Mono 2.0 (대부분 ECMA 사양에서 .NET Framework 버전 2.0으로 구현 됨)이 C # 3.0 구문 및 기능을 지원한다는 것을 알 수 있습니다.

198 iTSrAVIE Dec 31 2010 at 20:15
  • Visual Studio.NET을 사용하는 C # 1.0

  • Visual Studio 2005가 포함 된 C # 2.0

  • Visual Studio 2008이 포함 된 C # 3.0

  • Visual Studio 2010이 포함 된 C # 4.0

  • Visual Studio 2012가 포함 된 C # 5.0

  • Visual Studio 2015가 포함 된 C # 6.0

  • Visual Studio 2017이 포함 된 C # 7.0

  • Visual Studio 2019가 포함 된 C # 8.0

87 maxwellb May 07 2010 at 18:08

버전_____ 언어 사양 ______MICROSOFT 컴파일러

C # 1.0 / 1.2____ 2001 년 12 월 ? / 2003 ? ___________2002 년 1 월 ?

C # 2.0 _______2005 년 9 월 2005 년________________ 11 월 ?

C # 3.0 _______2006 년 5 월 2006 년_____________________ 11 월 ?

C # 4.0 _______2009 년 3 월 (초안)______________ 2010 년 4 월 ?

C # 5.0; 2012 년 8 월에 .NET 4.5와 함께 릴리스 됨

C # 6.0; .NET 4.6 2015와 함께 릴리스 됨

C # 7.0; .NET 4.7 2017과 함께 릴리스 됨

C # 8.0; .NET 4.8 2019와 함께 릴리스 됨

69 Milan Jan 26 2016 at 19:33

C # 버전 기록 :

C #은 Microsoft에서 개발 한 간단하고 강력한 개체 지향 프로그래밍 언어입니다.

C #은 2002 년 첫 번째 릴리스 이후 많은 발전을 이루었습니다. C #은 .NET Framework 1.0과 함께 도입되었습니다.

다음 표에는 C #의 각 버전에 도입 된 중요한 기능이 나열되어 있습니다.

최신 버전의 C #은 C # 버전 에서 사용할 수 있습니다 .

1 :

57 Mindless Jan 04 2017 at 12:38

이 표에있는 대부분의 버전을 요약했습니다. 누락 된 유일한 버전은 ASP.NET Core 버전이어야합니다. 또한 다른 버전의 ASP.NET MVC를 추가했습니다.

ASP.NET 5는 ASP.NET Core 1.0으로 브랜드가 변경되었으며 ASP.NET MVC 6은 ASP.NET Core MVC 1.0.0으로 브랜드가 변경되었습니다. 이 변경 사항은 2016 년 1 월경에 발생했다고 생각합니다.

표에 ASP.NET 5 RC1의 릴리스 날짜를 포함했지만 정확한 릴리스 날짜를 찾을 수 없기 때문에 아직 ASP.NET 코어 1.0 및 기타 코어 버전을 포함하지 않았습니다. ASP.NET Core와 관련된 릴리스 날짜에 대한 자세한 내용은 여기에서 읽을 수 있습니다. ASP.NET Core 1.0 (ASP.NET 5 / vNext)은 언제 릴리스 예정입니까?

54 IsraelOcbina Oct 15 2014 at 04:25

여기 에서 최신 C # 버전을 확인할 수 있습니다.

40 GennadyVaninГеннадийВанин May 21 2013 at 09:54

MSDN 기사 "C # 2.0 언어 및 컴파일러 의 새로운 기능 " 및 " Visual C # 2005의 새로운 기능 "을 비교하면 "C # major_version.minor_version"이 컴파일러의 버전 번호에 따라 만들어 졌다는 것을 추론 할 수 있습니다.

거기 C # 1.2 .NET 1.1 VS 2003에 대응 하며로 명명 카메라 C # 1 .NET 2003 .

그러나 Microsoft에서는 더 이상 부 버전 (점 뒤) 번호를 늘리거나 0이 아닌 다른 번호를 사용하기 위해 중단했습니다 0. .NET 3.5에 해당하는 C #은 msdn.microsoft.com에서 "Visual C # 2008 Service Pack 1" 로 명명됩니다 .

두 가지 병렬 이름 지정이 있습니다 : 주요 .NET / 컴파일러 버전 번호 지정 및 Visual Studio 번호 지정.

C # 2.0 은 Visual C # 2005 의 동의어입니다.

C # 3.0은 다음에 해당합니다 (또는 더 정확하게는 타겟팅 할 수 있음).

  • .NET 2.0 <==> Visual C # 2005
  • .NET3.0 <==> Visual C # 2008
  • .NET 3.5 <==> Visual C # 2008 서비스 팩 1
12 sayahimad Nov 25 2019 at 05:12

C # 1.0-Visual Studio .NET 2002

Classes
Structs
Interfaces
Events
Properties
Delegates
Expressions
Statements
Attributes
Literals

C # 1.2-Visual Studio .NET 2003

Dispose in foreach
foreach over string specialization
C# 2 - Visual Studio 2005
Generics
Partial types
Anonymous methods
Iterators
Nullable types
Getter/setter separate accessibility
Method group conversions (delegates)
Static classes
Delegate inference

C # 3-Visual Studio 2008

Implicitly typed local variables
Object and collection initializers
Auto-Implemented properties
Anonymous types
Extension methods
Query expressions
Lambda expression
Expression trees
Partial methods

C # 4-Visual Studio 2010

Dynamic binding
Named and optional arguments
Co- and Contra-variance for generic delegates and interfaces
Embedded interop types ("NoPIA")

C # 5-비주얼 스튜디오 2012

    Asynchronous methods
    Caller info attributes

C # 6-비주얼 스튜디오 2015

Draft Specification online
Compiler-as-a-service (Roslyn)
Import of static type members into namespace
Exception filters
Await in catch/finally blocks
Auto property initializers
Default values for getter-only properties
Expression-bodied members
Null propagator (null-conditional operator, succinct null checking)
String interpolation
nameof operator
Dictionary initializer

C # 7.0-비주얼 스튜디오 2017

Out variables
Pattern matching
Tuples
Deconstruction
Discards
Local Functions
Binary Literals
Digit Separators
Ref returns and locals
Generalized async return types
More expression-bodied members
Throw expressions

C # 7.1-Visual Studio 2017 버전 15.3

Async main
Default expressions
Reference assemblies
Inferred tuple element names
Pattern-matching with generics

C # 7.2-Visual Studio 2017 버전 15.5

Span and ref-like types
In parameters and readonly references
Ref conditional
Non-trailing named arguments
Private protected accessibility
Digit separator after base specifier

C # 7.3-Visual Studio 2017 버전 15.7

System.Enum, System.Delegate and unmanaged constraints.
Ref local re-assignment: Ref locals and ref parameters can now be reassigned with the ref assignment operator (= ref).
Stackalloc initializers: Stack-allocated arrays can now be initialized, e.g. Span<int> x = stackalloc[] { 1, 2, 3 };.
Indexing movable fixed buffers: Fixed buffers can be indexed into without first being pinned.
Custom fixed statement: Types that implement a suitable GetPinnableReference can be used in a fixed statement.
Improved overload candidates: Some overload resolution candidates can be ruled out early, thus reducing ambiguities.
Expression variables in initializers and queries: Expression variables like out var and pattern variables are allowed in field initializers, constructor initializers and LINQ queries.
Tuple comparison: Tuples can now be compared with == and !=.
Attributes on backing fields: Allows [field: …] attributes on an auto-implemented property to target its backing field.

C # 8.0-.NET Core 3.0 및 Visual Studio 2019 버전 16.3

Nullable reference types: express nullability intent on reference types with ?, notnull constraint and annotations attributes in APIs, the compiler will use those to try and detect possible null values being dereferenced or passed to unsuitable APIs.
Default interface members: interfaces can now have members with default implementations, as well as static/private/protected/internal members except for state (ie. no fields).
Recursive patterns: positional and property patterns allow testing deeper into an object, and switch expressions allow for testing multiple patterns and producing corresponding results in a compact fashion.
Async streams: await foreach and await using allow for asynchronous enumeration and disposal of IAsyncEnumerable<T> collections and IAsyncDisposable resources, and async-iterator methods allow convenient implementation of such asynchronous streams.
Enhanced using: a using declaration is added with an implicit scope and using statements and declarations allow disposal of ref structs using a pattern.
Ranges and indexes: the i..j syntax allows constructing System.Range instances, the ^k syntax allows constructing System.Index instances, and those can be used to index/slice collections.
Null-coalescing assignment: ??= allows conditionally assigning when the value is null.
Static local functions: local functions modified with static cannot capture this or local variables, and local function parameters now shadow locals in parent scopes.
Unmanaged generic structs: generic struct types that only have unmanaged fields are now considered unmanaged (ie. they satisfy the unmanaged constraint).
Readonly members: individual members can now be marked as readonly to indicate and enforce that they do not modify instance state.
Stackalloc in nested contexts: stackalloc expressions are now allowed in more expression contexts.
Alternative interpolated verbatim strings: @$"..." strings are recognized as interpolated verbatim strings just like $@"...".
Obsolete on property accessors: property accessors can now be individually marked as obsolete.
Permit t is null on unconstrained type parameter

[출처] : https://github.com/dotnet/csharplang/blob/master/Language-Version-History.md

6 user12275552 Aug 08 2020 at 22:01
Version     .NET Framework  Visual Studio   Important Features
C# 1.0  .NET Framework 1.0/1.1  Visual Studio .NET 2002     

    Basic features

C# 2.0  .NET Framework 2.0  Visual Studio 2005  

    Generics
    Partial types
    Anonymous methods
    Iterators
    Nullable types
    Private setters (properties)
    Method group conversions (delegates)
    Covariance and Contra-variance
    Static classes

C# 3.0  .NET Framework 3.0\3.5  Visual Studio 2008  

    Implicitly typed local variables
    Object and collection initializers
    Auto-Implemented properties
    Anonymous types
    Extension methods
    Query expressions
    Lambda expressions
    Expression trees
    Partial Methods

C# 4.0  .NET Framework 4.0  Visual Studio 2010  

    Dynamic binding (late binding)
    Named and optional arguments
    Generic co- and contravariance
    Embedded interop types

C# 5.0  .NET Framework 4.5  Visual Studio 2012/2013     

    Async features
    Caller information

C# 6.0  .NET Framework 4.6  Visual Studio 2013/2015     

    Expression Bodied Methods
    Auto-property initializer
    nameof Expression
    Primary constructor
    Await in catch block
    Exception Filter
    String Interpolation

C# 7.0  .NET Core 2.0   Visual Studio 2017  

    out variables
    Tuples
    Discards
    Pattern Matching
    Local functions
    Generalized async return types
    Numeric literal syntax improvements
C# 8.0  .NET Core 3.0   Visual Studio 2019  

    
    Readonly members
    Default interface methods
    Pattern matching enhancements:
        Switch expressions
        Property patterns
        Tuple patterns
        Positional patterns
    Using declarations
    Static local functions
    Disposable ref structs
    Nullable reference types
    Asynchronous streams
    Asynchronous disposable
    Indices and ranges
    Null-coalescing assignment
    Unmanaged constructed types
    Stackalloc in nested expressions
    Enhancement of interpolated verbatim strings
3 ShivamMishra Mar 02 2020 at 18:48

C # 8.0은 최신 버전의 c #이며 .NET Core 3.x 이상 버전에서만 지원됩니다. 대부분의 최신 기능에는 .NET Core 3.x에 도입 된 라이브러리 및 런타임 기능이 필요합니다.

다음 표에는 버전 및 기본 C # 버전이있는 대상 프레임 워크가 나열되어 있습니다.

소스-C # 언어 버전 관리