문제

저는 C# 4.0의 새로운 기능에 대한 수많은 블로그, 게시물 및 StackOverflow 질문을 읽었습니다.새로운 WPF 4.0 기능도 공개되기 시작했습니다.내가 찾지 못했는데 알고 싶은 것:

  1. C#/WPF 개발자 관점에서 CLR 4.0의 주요 변경 사항은 무엇입니까?
  2. 전체적으로 CLR 4.0의 주요 변경 사항은 무엇입니까?

내 생각에 내부적으로 대부분의 변경 사항은 새로운 동적 언어와 병렬 프로그래밍에 대한 것입니다.하지만 다른 중요한 개선 사항이 있나요?언어 개선은 바로 언어 개선이기 때문입니다.새 컴파일러만 있으면 해당 기능은 버전 1.0/1.1을 제외하고 낮은 버전의 .Net에서 사용할 수 있습니다(적어도 대부분은 사용할 수 있음).

그리고 위의 기능만 있다면 이 기능들에 대해서만 버전이 4.0으로 변경되는데, .Net 4.0 버전을 기반으로 하기 때문에 4.0이라고 생각합니다(예:1.0/1.1, 2.0 및 3.0/3.5 이후).버전 증가가 정당합니까?

편집됨:

Pavel Minaev가 의견에서 지적했듯이 이 두 기능도 CLR에 독립적입니다.3.0과 3.5에서도 속도와 기타 개선 사항이 있었습니다.그렇다면 버전이 증가하는 이유는 무엇입니까?

도움이 되었습니까?

해결책

제가 알고 있는 새로운 CLR 중 하나는 인터페이스, 구조체 및 대리자를 위한 구조적 유형 지정 형식입니다. NoPIA 지원 - 기본적으로 런타임에서는 동일한 정의가 있는 고유 유형을 동일한 것처럼 처리할 수 있습니다. 따라서 두 개의 어셈블리가 A 그리고 B 각각 COM에서 가져온 인터페이스가 있습니다. IFoo 동일한 IID 및 동일한 멤버를 사용하여 선언된 경우 런타임은 이를 동일한 유형으로 처리합니다.그래서 인스턴스가 있다면 어떤 클래스 Foo 구현 [A]IFoo, 다음으로 전송할 수 있습니다. [B]IFoo, 출연진이 작동합니다.

또 다른 기능은 단일 프로세스에서 여러 CLR 버전을 나란히 호스팅할 수 있다는 것입니다.예를 들어, 하나의 프로세스에서 1.x와 2.0을 호스팅할 수 없지만 2.0과 4.0은 호스팅할 수 있습니다.이에 대한 주요 이점은 두 CLR 버전용으로 작성된 플러그인을 동시에 로드할 수 있다는 것입니다.

한 가지 사소한 점은 다음과 같이 몇 가지 예외를 잡을 수 없게 되었다는 것입니다. StackOverflowException 2.0에 있었습니다 - 잡을 수 없습니다 AccessViolationException 예를 들어 더 이상.

또한, 여기 PDC 2008의 CLR 4.0에 대한 PowerPoint 프레젠테이션입니다.지금은 약간 구식일 수 있지만 거기에 언급된 대부분의 내용은 베타 버전인 것 같습니다.

다른 팁

많은 변화가 있습니다.

CLR 자체에는 몇 가지 변경 사항이 있습니다. 가비지 수집기는 워크 스테이션 모드에서 Gen0/1 및 Gen2의 동시 컬렉션을 지원하도록 변경되고 있습니다. 또한 보안 구현 방법에는 약간의 변화가 있습니다. 병렬 프레임 워크는 CLR의 ThreadPool 구현 중 일부를 변경합니다 (완전히 관리되는 것은 아니라 런타임 자체의 일부). 또한 유형 시스템에는 몇 가지 변경 사항이 있으며 대부분 새로운 PIA COM 지원과 관련이 있습니다.

가장 큰 변화는 아마도 CLR 변경보다는 더 많은 라이브러리/프레임 워크 변경 일 것입니다. DLR을 프레임 워크에 통합하는 것과 같은 새로운 동적 유형. 프레임 워크 측면에서, 당신은 반응성 프레임 워크, 병렬 라이브러리 확장, 코드 계약, 튜플 지원 및 많은 작은 변화를 가지고 있습니다 (예 : Enum.TryParse, Lazy<T>, 다른 작지만 좋은 개선 사항).

새로운 IL 지침이 있다고 생각하지 않습니다. 새로운 CLR은 2.0 CLR과 동일한 작업을 수행하지만 더 나은 인라인 및 쓰레기 수집과 같은 것들을 개선했습니다. 가상 머신 (예 : CLR 또는 JVM)은 여러 구현이있는 추상적 인 개념입니다. CLR 4.0은 CLR 2.0과 동일한 추상 기계라고 생각합니다.

새로운 역동적 인 것들조차도 새로운 API가있는 컴파일러 트릭 일뿐입니다. 새로운 opcode로 제안되는 Java.)

내가 이것에 대해 틀렸다면 알고 싶어요!

각 릴리스 문서에 대해 팀은 "새로운 것"문서를 만듭니다.

다음은 C# 4.0 Beta2에 대한 것입니다. Visual C# 2010의 새로운 기능

다음은 .NET Framework 4.0 Beta2를위한 것입니다. .NET Framework 버전 4의 새로운 기능

이것들은 당신이 찾을 수있는 가장 완전한 변경 목록입니다.

CLR의 많은 핵심 인터페이스 및 대의원 유형이 지원하여 업데이트되었습니다. 일반적인 공분산 및 비정상적인. 예를 들어, IEnumerable<T> 변경되었습니다 IEnumerable<out T>.

나는 반사기의 새로운 C# 물건을 보려고 시도했다.

  • 동적 유형은 다음으로 번역됩니다 물체S, Compiler Magic을 통해 라이브러리 호출을 추가하여 런타임 바인딩을 처리합니다.
  • 선택적 매개 변수는 컴파일러를 통해 처리됩니다. x에 대한 값을 지정하지 않고 foo (int x = 5)를 호출하면 전화를 반사기에서 foo (5)로 표시합니다.

따라서 CLR 2.0의 일반적인 지원과 같이 변경 사항은 쉽게 찾을 수있는 것이 없다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top