2010-11-18 5 views
6

이것은 간단한 작업처럼 보이지만 올바른 구문을 해결할 수없는 것 같습니다.KeyValuePair 배열 초기화

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[]; 

그러나이 작동하는 것 같다 :

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string,string>[10]; 

를하지만 처음에 배열의 크기를 모르는 나는 현재이 있습니다. 나는 내가 KVPs의 목록을 사용할 수 있다는 것을 알고있다. 아마도 나는 실제로 어떻게 할 수 있는지 알고 싶었다.

+2

'사전'을 사용하지 않는 이유가 있습니까? 아니면 배열 초기화에 대한 이론적 인 질문입니까? – Bobby

+1

이론적 인 질문입니다.하지만 중복 된 항목도 있습니다. –

+0

조회 기능이 필요하고 키당 여러 값을 처리해야하는 경우 System.Linq.Lookup 클래스를 사용하는 것이 좋습니다. 그래도 불변입니다. 자세한 정보 : http://msdn.microsoft.com/en-us/library/bb460184.aspx –

답변

8

아니요, 배열은 항상 고정 크기이므로 아니요. 그 크기를 시작으로 지정하지 않으면 어떤 크기를 사용할 것으로 예상됩니까? 은 크기 자체 (또는)를 지정해야합니다 (크기를 유추 할 수 있음). 예를 들어 :

int[] x = new int[10]; // Explicit size 
int[] y = new int[] { 1, 2, 3, 4, 5 }; // Implicit size 
int[] z = { 1, 2, 3, 4, 5 }; // Implicit size and type 

List<T>은 확실히 당신이 시작하는 크기를 모르는 컬렉션에 대한 당신의 친구입니다.

7

왜 오히려

List<KeyValuePair<string, string>> 

이 약 List Class

1

방법에 대해 살펴보고 사용할 수 있습니까?

var kvpArr = new List<KeyValuePair<string,string>>(); 
6

배열은 정의에 따라 고정 크기입니다. 당신은 당신의 두 번째 코드 예제와 같이 크기를 지정할 수 있습니다, 또는 당신은 초기화에서 추론 할 수 있습니다 :

KeyValuePair<string, string>[] kvpArr = new KeyValuePair<string, string>[] 
{ 
    new KeyValuePair<string, string>(...), 
    new KeyValuePair<string, string>(...), 
    ... 
} 

는 가변 길이 구조를 원하는 경우에, 나는 당신이 List<T>을 사용하는 것이 좋습니다.

배열에 대한 자세한 내용은 C# programming guide을 참조하십시오.

+0

세미 콜론이 없습니다. :) – 8bitcartridge