【发布时间】:2019-05-16 08:35:13
【问题描述】:
我正在处理以下类结构:
internal class C1
{
private static readonly int iMinVal = 1;
private static readonly int iMaxVal = 100;
public readonly int Number;
public C1(int iNum)
{
if (iNum < iMinVal || iNum > iMaxVal)
throw new OverflowException();
this.Number = iNum;
}
}
internal partial class C2
{
public readonly List<C1> Series = new List<C1>(10);
public C2(List<int> lNumbers)
{
lNumbers.Sort();
try
{
Series[0] = new C1(lNumbers[0]);
Series[1] = new C1(lNumbers[1]);
Series[2] = new C1(lNumbers[2]);
Series[3] = new C1(lNumbers[3]);
Series[4] = new C1(lNumbers[4]);
Series[5] = new C1(lNumbers[5]);
Series[6] = new C1(lNumbers[6]);
Series[7] = new C1(lNumbers[7]);
Series[8] = new C1(lNumbers[8]);
Series[9] = new C1(lNumbers[9]);
}
catch (OverflowException)
{
MessageBox.Show("M1!","M2");
throw;
}
}
我尝试通过以下方式使用这两个类:
private void btn_Click(object sender, EventArgs e)
{
List<C2> lRes = new List<C2>(5);
for (int iRow = 0; iRow < 5; iRow++)
{
List<int> lNumbers = new List<int> {6, 2, 5, 3, 1, 4, 10, 8, 7, 9};
lRes[iRow] = new C2(lNumbers);
}
}
但它不起作用。 错误消息说:
System.ArgumentOutOfRangeException: '索引超出范围。一定是 非负数且小于集合的大小。
如果有人能帮助我找出我的错误,我将不胜感激。
【问题讨论】:
-
List<C2> lRes = new List<C1>(5);这甚至可以编译吗?C1和C2之间没有继承关系 -
new C1(lNumbers);List<int> 类型的构造函数。 -
是的。你说的对。我只是编辑我的代码。这些错误出现在我的代码中,因为我只是更改了原始代码中的名称以简化代码并保护上下文。