I 다음 생성하고 Dictionary<int, List<string>>
패스
private static readonly Random rnd = new Random();
private static Dictionary<int, List<string>> GenerateValues(string entityType, int rows)
{
var values = new Dictionary<int, List<string>>();
var baseValues = new List<string> { "99 Hellesdon Road","Home","Norfolk","NR6 5EG","Norwich" };
Action<int> rowLoop = null;
switch (entityType)
{
case "Employer":
rowLoop = (row) =>
{
var employer = new List<string>
{
$"Employer {rnd.Next(10000, 99999)}",
$"{rnd.Next(100000000, 999999999)}",
"TRUE"
};
var rowValue = baseValues;
rowValue.AddRange(employer);
values.Add(row, rowValue);
};
break;
case "AssessmentCentre":
rowLoop = (row) =>
{
var rowValue = baseValues;
rowValue.Add($"Assessment Centre {rnd.Next(10000, 99999)}");
values.Add(row, rowValue);
};
break;
}
for (int i = 1; i <= rows; i++)
{
rowLoop(i);
}
return values;
}
를 반환하고 다음 코드에 대한 의도 그리고 ... 함께
var spreadsheetValues = GenerateValues("Employer", 5);
를 호출해야 코드는 일부 기본 값을 List<string>
에 저장 한 다음 메서드에 전달되는 값에 따라 entityType
에 따라 일부 기본 값에 추가 값을 추가합니다. 그런 다음 Dictionary<int, List<string>>
을 만들려면 특정 수의 행을 반복합니다. 여기서 int
은 행 번호입니다.
문제는 내가 for 루프를 반복 할 때마다 baseValues
이 업데이트되고 있다는 것입니다. var rowValue = baseValues;
이 컬렉션의 마지막 항목의 디버그 스크린 샷입니다 사용할 때, 나는 여덟 개 항목을 포함하는 Dictionary<int, List<string>>
의 각 List<string>
을 기대하고
....이 기대하지 않았다 대신 각 반복마다 커지고 있습니다.
왜 이런 현상이 발생하며 어떻게 해결할 수 있습니까?
을 대신 다시'같은 baseValue'를 재사용하고 다시이 반복 될 때마다 더 많은 항목을 추가하는 - 당신은 employer.InsertRange'과 같은 작업을 수행 할 수 있습니다 (0, baseValues) ; values.Add (행, 고용주);' – Evk