2013-02-18 1 views
0

그래서 일부 데이터를 배열에 저장하는 코드가 있습니다. 새 데이터가 들어 오면 새 배열 항목 (배열 항목의 총 수)에 넣습니다. 그런 다음 배열 항목의 총 수가 너무 많아서 다음 데이터 비트가 준비되지 않습니다. 하지만 배열에 데이터를 추가하려고하면 array [0] 또는 배열 인덱스가 범위 밖으로 벗어난다 던가요?배열에 데이터를 추가 할 때 배열의 경계를 벗어납니다.

선언 :

string[] TabMessages = { }; 
int TotalTabs = 0; 

하면 사용 : 그것은 인덱스가 난 배열의 범위를 벗어 것에 대해 오류를 던지고 있기 때문에

DevComponents.DotNetBar.TabItem Tab = TabStrip.CreateTab(TabName); 
Tab.Tooltip = id + "|" + TabIndex; 
TabMessages[TotalTabs] = "";//index out of bounds of array 
TabStrip.SelectedTab = Tab; 
TotalTabs++; 

어떤 도움이 내게 정말 짜증나 배열에 새로운 항목을 만들려고합니다.

+0

배열은 필요한 크기로 할당되어야합니다. 동적 배열을 원한다면'List'를 시도하십시오 – tGilani

답변

1

C#의 배열은 고정 크기입니다. 뭔가를 사용하여 시도하십시오 List<string>Add 메서드를 사용하여 새 항목을 삽입하십시오.

TabMessages은 0 요소의 배열입니다 (즉, 선언 한 방식입니다). 따라서 매번 요소를 추가 (또는 설정) 할 수 없으며 매번 범위를 벗어나는 인덱스 예외가 발생합니다.

+0

완벽하게 작업했습니다.감사합니다. 도움을 주신 모든 분들께도 감사드립니다. :) – user1763295

1

이 코드 :

string[] TabMessages = new string[0]; 

그것은 당신에게 당신이 예외의 종류를 가지고 왜 크기 0으로 생성 된 배열을 의미

string[] TabMessages = { }; 

은 동일합니다.

var TabMessages = new List<string>(); 

그런 다음 첫 번째 항목을 추가 할 수 있습니다 :

TabMessages.Add(string.Empty); 

을 또는 비즈니스 규칙에 따라 고정 된 크기의 문자열 배열을 만들 :

string[] TabMessages = new string[5]; // create string array with 5 elements 
그래서 대신 동적 크기 List<string>을 사용할 수 있습니다
1

배열은 정적 길이입니다. 길이가 0 인 배열을 정의한 다음 존재하지 않는 배열의 요소에 액세스하려고했습니다. 사용하려는 모든 값을 보유 할 수있는 충분한 크기의 배열을 만들거나 string[]과 같은 정적 크기 대신 List<string>과 같은 비 정적 컬렉션을 사용해야합니다.

Dictionary<int, string> TabMessages = new Dictionary<int, string>(); 
TabMessages[TotalTabs] = ""; 
0

배열의이 고정 된 크기를 갖는 것으로 정의됩니다

List<string> TabMessages = new List<string>(); 
TabMessages.Add(""); 

당신이 인덱스로 액세스 할 수있는 뭔가를 원하지만, 가능한 모든 값을 제공하지 않는 경우는, 사전을 사용합니다. string[] TabMessages = {}를 선언하는 것은 (하지만 난 그게 적당히 비싼 과정이라고 생각) string[0] Tabmessages;

당신은 배열의 크기를 조정할 수와 동일합니다 - (바람직와) http://www.dotnetperls.com/array-resize

또는

를 참조 목록의 일부 유형이 구축 사용해보십시오

관련 문제