Ну, строка
public readonly List<C1> Series = new List<C1>(10);
означает «Создать список из 0 элементов, но резервировать место для 10
элементов (чтобы не перераспределять память»).)».Обратите внимание, что Series
не имеет элементов , и поэтому
Series[0] = new C1(lNumbers[0]);
сгенерирует исключение (Series[0]
не существует , поскольку0
является вне диапазона ).Вы должны Add
предметов, например, быстрое (и грязное) исправление
public C2(List<int> lNumbers) {
lNumbers.Sort();
try
{
Series.Clear();
Series.Add(new C1(lNumbers[0])));
Series.Add(new C1(lNumbers[1]));
Series.Add(new C1(lNumbers[2]));
Series.Add(new C1(lNumbers[3]));
Series.Add(new C1(lNumbers[4]));
Series.Add(new C1(lNumbers[5]));
}
catch (OverflowException)
{
MessageBox.Show("M1!","M2");
throw;
}
}
, лучший подход - Linq :
// IEnumerable<int> - let's generalize: what if we want to pass an array?
public C2(IEnumerable<int> lNumbers) {
// public method arguments validation
if (null == lNumbers)
throw new ArgumentNullException(nameof(lNumbers));
try {
Series = lNumbers
.OrderBy(item => item)
//.Take(10) // uncomment, if you want to take just top 10 items, not more
.Select(item => new C1(item))
.ToList();
}
catch (OverflowException) {
MessageBox.Show("M1!","M2");
throw;
}
}