2010-07-30 4 views
3

요소는 .NET의 컨테이너에 어떻게 저장됩니까? 예를 들어 C++ 벡터는 순차적 순서로 저장되지만 List는 그렇지 않습니다.
.NET 컨테이너 (Array, ArrayList, ...)에 대해 어떻게 구현됩니까?
감사합니다.요소는 .NET의 컨테이너에 어떻게 저장됩니까?

+0

가능한 중복 : http://stackoverflow.com/questions/487202/memory-layout-of-a-net-array –

+0

거의 모든 배열에 대해 배열이 있지만 컨테이너가 필요합니다. –

답변

1

요소에 따라 다릅니다. 그러나 C++ Vector는 C# List 및 C++ List<T>

는 C# ArrayList 꽤 많이 C#을 LinkedList의에 해당하는 C# List<object>

위키 백과 many data structures를 나열하는 것과, 그리고 난 당신이 봐 제안 거기에서 다른 것들이 어떻게 구현되는지보십시오. 그래서

:

.NET에서
C++  C#      How 
Vector  ArrayList/List  Array (sequential) 
List  LinkedList    Linked List (non-sequential, i.e. linked) 
+0

감사합니다, exectly 내가 뭘 실 거예요 –

1

컨테이너마다 다릅니다. 구현은 독점적이기 때문에 기본 데이터 구조 으로 지정해야한다는 공개 사양은 없습니다. Microsoft .NET Framework를 디버깅 기호

  • 디버깅 : MS는이 클래스 또는 구현 방법을 이해하기 전에

    당신이 시간을내어에 관심이 있다면

    , 나는 다음과 같은 도구를 사용했습니다.
  • 반사경을 사용하여 어셈블리 검사.
1

, 용기 (심지어 배열) 그들에 대한 모든 액세스를 처리합니다. 포인터를 사용하여 작업하지 마십시오 (극히 드문 경우를 제외하고는 아마 들어 가지 않을 것입니다). 그래서 정보를 저장하는 방법은 중요하지 않습니다. 많은 경우에 장면이 어떻게 작동 하는지를 지정하지 않았으므로 구현을 바보 같은 이유로 세부 정보에 의존하지 않고 "더 나은"것으로 변경할 수 있습니다.

마지막으로 배열은 항목을 순차적으로 저장합니다. 참조 유형 개체 (구조체가 아닌 모든 항목)에 대한주의 사항으로 "항목"은 개체 자체와는 대조적 인 참조입니다. 데이터는 메모리의 어느 위치 에나있을 수 있습니다. 객체 배열보다 참조 배열과 더 비슷하다고 생각하십시오.

배열을 기반으로하는 ArrayLists는 동일한 방식으로 항목을 저장해야합니다.

관련 문제