2010-11-26 5 views
3

저는 연수생 소프트웨어 엔지니어입니다. 수집 및 제네릭에 대한 자습을했고 TL에보고했습니다. 그는 나에게 이런 것들을 공부하라고 제안했다..NET 콜렉션 및 제네릭의 작동 방식은 무엇입니까?

특히 제네릭 일반 유형에 대한 메모리 정의 방법, IL 및 CLR이 제네릭에 대해 어떻게 작동합니까?

퍼포먼스 오버 콜렉션 또는 복싱 오버 박스의 성능?

나는 챙겨 줬지만 대답은 좁혀졌다. 누구든지 설명하거나 문제를 (링크) 줄 수있는 사람을 기쁘게 생각합니다.

감사합니다.

+0

왜 그렇습니까? 내부가 바뀔 수 있습니다. 그래서 잘 정의 된 라이브러리를 사용합니다. –

+0

제 생각에는 OP는 제네릭이 원시 컬렉션 유형과 다른 점을 의미합니다. –

+0

@ srinivas ... 예. 일반 유형 에 대한 일반 할당 메모리는 T가 될 수 있습니다. – PawanS

답변

7

.NET 공용 언어 런타임 용 일반 디자인 및 구현 Andrew Kennedy 및 Don Syme의 저서 인 Don Syme은 CLR에서 제네릭을 구현하는 이론에 대해 설명합니다. http://research.microsoft.com/pubs/64031/designandimplementationofgenerics.pdf

소스 코드는 .NET Framework에서 사용할 수 있으며 System.Collections.Generic을 통해 디버깅 할 수 있습니다. http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx

자세한 정보가 필요하면 .NET Framework의 "소스로 사용할 수있는"부분 인 Rotor (공유 소스 공통 언어 인프라) 소스 코드를 읽을 수 있습니다. http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&displaylang=en

또 다른 구현은 Mono 프로젝트입니다. 그들은 일반 콜렉션의 구현을 가지고 있으며 Mono 코드베이스는 오픈 소스입니다. http://www.mono-project.com/Main_Page

+0

감사합니다 James, 내가 원하는 것을 얻었습니다. – PawanS

3

.NET 내부를 볼 때 매우 유용한 도구는 Reflector입니다. 컬렉션을 포함하여 많은 .NET 클래스의 전체 C# (또는 VB 또는 IL) 코드를 보여줍니다.

+0

Visual Studio 2010 Express Edition에서는 작동하지 않습니다. 먼저 평가판을 사용했습니다. – PawanS

+1

그것은 vnet과 독립적으로 작동하지만, vnet에 통합되어 소스 코드에 액세스하지 않고 제 3 자 어셈블리를 디버깅 할 수있는 플러그인 (구입해야 함)이 있습니다. Reflector를 사용하는 것이 좋습니다. 반드시 첫 번째 의견은 죄송합니다. – Onkelborg

+0

입니다. 나중에 그것은 독립적으로 작동합니다. 나는 그것을 지금 받고있다, 고맙다. – PawanS

관련 문제