최근 편집자 개발에 관한 프로젝트를 수행하고 있습니다. C# 목록에서 ADD 기능을 사용하는 것을 허용 할 수 있지만 인덱싱을 통해 값을 지정할 수 없습니다. 아무도 도와 줄 수 있습니까?C# 인덱스가 범위를 벗어났습니다. 음수가 아니어야하고 컬렉션의 크기보다 작아야합니다.
답변
List<List<String>> datalist = new List<List<String>>();
....
datalist[tag.Count-1]=datasublist;
존재하지 않는 것을 지정하려고하기 때문에 문제가됩니다. 목록은 배열과 같지 않습니다. 배열에서 특정 크기로 선언하고 사용자가 작성한 부분을 사용할 수 있습니다. datalist
을 아무 것도 포함하지 않은 새 목록으로 선언 했으므로 바꿀 수있는 내용이 없습니다. 당신은 기본적으로 나머지를 반환합니다 내가 코멘트에서 언급 한 바와 같이
datalist.Add(datasublist);
옆으로 관련이없는, 당신은
line.Substring(26)
으로
line.Substring(26, EndOfIndex)
대체 할 수 사용해야 문자열의. EndOfIndex
변수를 제거 할 수도 있습니다. 내가 오류가 있으리라 믿고있어
라인에 : 당신이 더 나은 아직 어쩌면 Dictionary<string, List<string>>
Dictionary<int, List<string>>
를 원하거나 같은
datalist[tag.Count-1]=datasublist;
은 얼핏보기에 그것은 나에게 보였다. 이 경우 값 tag.Count - 1
또는 방금 추가 한 태그 값을 저장할 수 있습니다. 그러나 두 번째 생각에서 위의 줄은 반복되어 반복되고 있으며, 여러분은 상관 목록에 여러 줄을 추가하려고하는 것처럼 보입니다.
class TagInfo
{
public string TagName {get; set;}
private readonly List<string> data = new List<string>();
public List<string> Data {get {return data;}}
}
것은 당신이 할 수 있습니다 : 당신은 할 수
List<TagInfo> tags = new List<TagInfo>();
while (line != null)
{
if (line.Substring(0, 26) == "CRDI-CONTROL %%LINES-BEGIN")
{
string tagName = line.Substring(26);
TagInfo tag = new TagInfo {TagName = tagName};
tags.Add(tag);
line = reader.ReadLine();
while (line.Substring(0, 24) != "CRDI-CONTROL %%LINES-END")
{
tag.Data.Add(line.Replace(" ", String.Empty));
line = reader.ReadLine();
}
}
을
그래서, 나는 태그 이름과 함께 관련 데이터를 저장하는 클래스를 사용하는 것이 좋습니다 나중에 고급 이름으로 태그를 검색해야하는 경우에는 Dictionary<string, TagInfo>
을 사용하십시오. 태그 이름을 키로 저장하십시오. 원하는 경우 태그 이름을 사용하는 생성자를 추가하거나 직접 TagInfoCollection
을 생성하여 코드를 정리할 수 있습니다.
이 행은 내 프로그램에서 실행할 수 없습니다. tag.Data.Add (line.Replace ("", String .빈)); – user3750656
- 1. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하고 컬렉션의 크기보다 작아야합니다.
- 2. excpetion 오류 : 인덱스가 범위를 벗어났습니다. 음수가 아니어야하고 컬렉션의 크기보다 작아야합니다.
- 3. Listview Datapager - 인덱스가 범위를 벗어났습니다. 음수가 아니어야하고 컬렉션 크기보다 작아야합니다.
- 4. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 컬렉션의 크기보다 작아야합니다. VB.net Gridview
- 5. C#> 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 모음 크기보다 작아야합니다.
- 6. C# : 인덱스가 범위를 벗어났습니다. 음수가 아니고 컬렉션 크기보다 작아야합니다.
- 7. 인덱스가 범위를 벗어났습니다. 음수가 아니고 콜렉션의 크기보다 작아야합니다.
- 8. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션 크기보다 작아야합니다.
- 9. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션 크기보다 작아야합니다.
- 10. 오류 메시지 '인덱스가 범위를 벗어났습니다 음수가 아니어야하며 컬렉션의 크기보다 작아야합니다. "이 코드가
- 11. datagridview에서 '인덱스가 범위를 벗어났습니다.'라는 메시지가 표시됩니다. 음수가 아니고 컬렉션의 크기보다 작아야합니다. '
- 12. 인덱스가 범위를 벗어났습니다. DataGridview에서 collection.parameter 이름의 크기보다 작고 음수가 아니어야합니다.
- 13. HexString에서 Decimal로 변환 오류 : 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : startIndex
- 14. Datagrid, 인덱스가 범위를 벗어났습니다
- 15. 오류 '인덱스가 범위를 벗어났습니다 컬렉션의 크기보다 음이 아닌 및 작아야합니다 매개 변수 이름 :.. 인덱스 "
- 16. System.ArgumentOutOfRangeException : 인덱스가 범위를 벗어났습니다.
- 17. 인덱스가 범위를 벗어났습니다. 음수가 아니고 콜렉션 크기보다 작아야합니다. 매개 변수 이름 인덱스
- 18. 인덱스가 범위를 벗어 났으며 컬렉션의 크기보다 작고 음수가 아니어야합니다.
- 19. 인덱스가 범위를 벗어났습니다.
- 20. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 List에있는 콜렉션의 크기보다 작아야합니다. <string>
- 21. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : 된 DataGridView VB .NET에서 인덱스
- 22. Linq 개체 오류 : 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : 인덱스
- 23. 인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다. 매개 변수 이름 : 색인
- 24. "인덱스가 음수가 아니고 컬렉션 크기보다 작아야합니다"라는 오류를 어떻게 해결할 수 있습니까? C#
- 25. VB "인덱스가 범위를 벗어났습니다. 음수가 아니고 컬렉션의 크기보다 작아야합니다." 임의 번호를 두 번 이상 생성하려고 할 때
- 26. 는 "인덱스가 범위를 벗어났습니다 컬렉션의 크기보다 음이 아닌 및 작아야합니다 매개 변수 이름 :.. 인덱스"
- 27. 음수가 아니어야하며 군중의 크기보다 작아야합니다.
- 28. C# 인덱스 범위를 벗어났습니다
- 29. Asp.net:TreeView 및 인덱스가 범위를 벗어났습니다
- 30. datareader를 실행할 때 인덱스가 범위를 벗어났습니다.
색인으로 요소를 처음 참조 할 때 목록에 데이터가 포함되어 있습니까? – IrishGeek82
'line.Substring (26, EndOfIndex)'를 단지'line.Substring (26)'으로 대체 할 수 있습니다. 기본적으로 나머지 문자열을 반환합니다 – cost
입력에 액세스 할 수 없으므로 일부 중단 점을 설정하고 코드를 단계별로 실행 해보십시오. 문제가 명확하지 않으면 예외를 던지는 행과 그 시점의 다양한 변수의 값을 알려주십시오. –