여기서 문제는 List
이 요소를 자동으로 생성하지 않는다는 것입니다. List<List<T>>
는이 같은 필요 초기화하려면 Capacity
를 설정하는 것은 충분하지 않습니다 것을
List<List<int>> results = new List<List<int>>();
for (int i = 0; i < 10; i++)
{
results.Add(new List<int>());
for (int j = 0; j < 10; j++)
{
results[i].Add(0);
}
}
주, 당신은 당신이 필요로하는 횟수 Add
를 호출해야합니다. 양자 택일로, 당신은 Linq에의 Enumerable
클래스를 사용하여 일을 단순화 할 수 있습니다 : 그것은 동일한 목록 10 참조를 추가하기 때문에
List<List<int>> results = new List<List<int>>();
for (int i = 0; i < 10; i++)
{
results.Add(new List<int>());
results[i].AddRange(Enumerable.Repeat(0, 10));
}
다시, Enumerable.Repeat(new List<int>(), 10)
이 작동하지 않습니다.
극단적 Linq에를 사용하는 또 다른 방법 :
List<List<int>> results = Enumerable.Repeat(0, 10)
.Select(i => Enumerable.Repeat(0, 10).ToList())
.ToList();
마지막으로 (. 사용되지 않는 매개 변수 i
는 상술 한 바와 같이, 같은 목록 10 번을 참조하지 않도록하는 것이 필요하다) 요소에 액세스하려면 이전에 사용한 표기법을 정확하게 사용할 수 있습니다. 요소가 추가되면 같이, 그들은 읽거나 수정할 수 있습니다
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
results[i][j] = 2;
int x = results[i][j];
}
}
"작동하지 않는다"는 것이 무엇입니까? –
아마도 "참조 된 요소가 없으므로 예외가 발생합니다." –
그것은 충돌하고 그 범위 밖의 말합니다 –