2009-09-10 3 views
4

.NET 2.0 프레임 워크를 대상으로하는 응용 프로그램에서 사용할 수있는 C# 3.0 언어 기능은 무엇입니까?.Net 2.0의 C# 3.0 호환성

PS : 내가 아는 람다 식을 var 키워드

답변

4

여기를 참조하십시오

Using C# 3.0 (.Net 3.5) syntax in a .Net 2.0 application

을 .NET 2.0 프레임 워크를 대상으로하고 C# 3.0을 사용할 때 당신이 할 수있는 일과 할 수없는 일의 아래로 전체 실행하십시오. 요약

:

확장 방법은 정렬의 작업을하지만, 그들은 작동하기 위해 "System.Runtime.CompilerServices.ExtensionAttribute"을 요구하고,이 유형은 엄격 일부가 아닌 어떤합니다 (System.Core DLL 내에서 발견된다 .NET 2.0 프레임 워크).

쿼리 구문은 말 그대로 "사용할 수"있지만 타사 DLL (예 : LINQBridge)이 사용되는 경우 사용할 수 있습니다. 이 DLL은 .NET 2.0 프레임 워크를 대상으로 할 때 LINQ를 수행하는 데 필요한 "누락 된"형식을 효과적으로 다시 구현합니다. 또한 Extension 메서드가 작동하는 데 필요한 "ExtensionAttribute"유형을 구현하므로 프로젝트에서 LINQBridge DLL을 추가/참조하면 LINQ, 쿼리 구문/표현식 및 확장 메서드를 사용할 수 있습니다!

+0

Jon이 나를 괴롭 혔습니다. 운명의 이상한 비꼬아, 내가 링크 한 블로그 게시물에 대한 첫 번째 코멘트는 Jon Skeet (!) – CraigTP

+1

두 번째 "You can not"- 쿼리 구문을 사용할 수 있습니다. 간단히 말해서 그들은 ' LINQBridge와 같은 것을 사용하지 않는 한 현재 존재하지 않습니다. –

+0

@Marc - 당신 말이 맞아요. 그 점을 지적 해 주셔서 감사합니다. 나는이 사실을 반영하기 위해 나의 대답을 편집했다. – CraigTP

5

같은 몇 나는 article on this very topic 있습니다. 요컨대

: 지원

:

  • 자동 구현 속성 암시 로컬 변수 어레이 객체와 컬렉션 초기화 익명 유형 부분 방법 델리게이트 타입으로 변환 람다 표현식을 입력.

가 부분적으로 지원 :

  • 확장 방법 (속성 필요) 및 쿼리 표현식을 지원되지 않음

(LINQBridge 같은 유용 할 필요) :

  • 람다 표현 나무로 변환

실제로 표현 트리 으로의 변환은 System.Core의 Mono 구현을 통해 사용 가능한이라고 들었습니다. 나는 아직 그것을 시도하지 않았다 ... 나는 그렇게하는 의미를 지킨다 (그리고 그 다음 페이지를 업데이트한다).

+1

예, 적합한 표현식 클래스가있는 한 표현식 트리 항목이 정상적으로 작동한다고 의심됩니다. 물론, 그 클래스의 정확한 요구 사항은 스펙에 문서화되어 있지 않고, * 아무 것도 * 잘못 되었다면, 컴파일러는 매우 지저분한 방법으로 (당신이 예상하는 것보다 훨씬 더 못 생겨) 폭발합니다. 나는 그것의 작은 부분 (http://marcgravell.blogspot.com/2009/04/re-implementing-expression-for-compact.html)을 시도하는 것이 훨씬 재미 있었다. 모노 옵션은 정식 버전에 더 적합하다. –

+0

+1, 감사합니다 Jon and Marc :) –