언어 기능 및 라이브러리 형식 간의 관계

C# 언어 정의는 특정 형식 및 이러한 형식에서 액세스할 수 있는 특정 멤버를 갖는 표준 라이브러리를 필요로 합니다. 컴파일러는 다양한 많은 언어 기능에 이러한 필요한 이러한 형식과 멤버를 사용하는 코드를 생성합니다. 이러한 이유로 C# 버전은 해당 .NET 버전 이상에서만 지원됩니다. 이를 통해 올바른 런타임 동작과 필요한 모든 형식 및 멤버의 가용성이 보장됩니다.

표준 라이브러리 기능에 대한 이 종속성은 첫 번째 버전부터 C# 언어의 일부였습니다. 해당 버전에서 예제가 포함되어 있습니다.

  • Exception - 모든 컴파일러 생성 예외에 사용됩니다.
  • String - string의 동의어입니다.
  • Int32 - int의 동의어입니다.

첫 번째 버전은 간단했습니다. 컴파일러 및 표준 라이브러리는 함께 제공되었고 각각 하나의 버전만 있었습니다.

후속 버전의 C#은 종속성에 가끔 새 형식 또는 멤버를 추가했습니다. 예를 들면 INotifyCompletion, CallerFilePathAttributeCallerMemberNameAttribute입니다. C# 7.0에서는 튜플 언어 기능을 구현하기 위해 ValueTuple에 대한 종속성을 추가했습니다. C# 8에는 다른 기능 중에서도 범위 및 인덱스에 대해 System.IndexSystem.Range가 필요합니다. 새로운 버전마다 추가 요구 사항이 추가될 수 있습니다.

언어 디자인 팀은 호환 표준 라이브러리에 필요한 형식 및 멤버의 노출 영역을 최소화하려고 합니다. 해당 목표는 새 라이브러리 기능이 해당 언어로 원활하게 통합되는 단순한 디자인에 따라 조정됩니다. 표준 라이브러리에 새 형식 및 멤버를 필요로 하는 이후 버전의 C#에는 새 기능이 있을 예정입니다. C# 컴파일러 도구는 이제 지원되는 플랫폼의 .NET 라이브러리의 릴리스 주기에서 분리됩니다.