C# 如何处理这个ArgumentOutofRangeException?
我正在尝试制作一个程序,读取一个包含50个随机单词的文件,它将包含3个或更少字母的单词存储在一个名为SmallWords的列表中,将包含4个或更多字母的单词存储在一个名为LargeWords的列表中。我使用的是Windows窗体,我有一个包含两列的ListView控件“小词”和“大词”。很明显,我想做的就是把这些词放在相应的栏中。问题是这个文件没有25个小单词和25个大单词,你知道吗?可能它有30个小词和20个大词,所以当我循环向ListView添加项目时,它会抛出以下异常: ArgumentOutOfRange异常 这是我的密码C# 如何处理这个ArgumentOutofRangeException?,c#,winforms,list,listview,C#,Winforms,List,Listview,我正在尝试制作一个程序,读取一个包含50个随机单词的文件,它将包含3个或更少字母的单词存储在一个名为SmallWords的列表中,将包含4个或更多字母的单词存储在一个名为LargeWords的列表中。我使用的是Windows窗体,我有一个包含两列的ListView控件“小词”和“大词”。很明显,我想做的就是把这些词放在相应的栏中。问题是这个文件没有25个小单词和25个大单词,你知道吗?可能它有30个小词和20个大词,所以当我循环向ListView添加项目时,它会抛出以下异常: ArgumentO
var MaxNum = Math.Max(SmallWords.Count, LargeWords.Count);
for (var index = 0; index < MaxNum; index++)
{
ListViewItem item = new ListViewItem(SmallWords[index]);
item.SubItems.Add(LargeWords[index]);
listView1.Items.Add(item);
}
var MaxNum=Math.Max(SmallWords.Count,LargeWords.Count);
对于(var index=0;index
在这一行item.SubItems.Add(LargeWords[index])抛出异常代码>
有办法解决这个问题吗?还是想用另一种方式将项目添加到列中?我知道它是有效的,因为如果更改Math.Max(…)
到Math.Min(…)
它添加了单词,但只有20个大词和20个小词,我将在SmallWords列中缺少10个小词
谢谢您有两个长度不同的阵列,请尝试循环并访问两个阵列的最大值。那是行不通的。一旦达到较小数组的限制,就会出现超出范围异常
要修复的两个选项取决于您要执行的操作。可以循环到较小数组的最大值,也可以在达到最大值后跳过处理较小数组的部分
var MaxNum = Math.Min(SmallWords.Count, LargeWords.Count);
// ^--- Changed Max to Min
for (var index = 0; index < MaxNum; index++)
{
ListViewItem item = new ListViewItem(SmallWords[index]);
item.SubItems.Add(LargeWords[index]);
listView1.Items.Add(item);
}
var MaxNum=Math.Min(SmallWords.Count,LargeWords.Count);
//^---将最大值更改为最小值
对于(var index=0;index
我认为你应该用另一种方式看待这个问题。基本上,您是在i
索引中将一个大词添加到同一索引中的一个小词。这意味着您必须有一个小词才能将一个大词添加为子项。忘记查找最小值或最大值,只需循环计算小单词的数量,仅在索引在范围内时添加大单词:
for (var index = 0; index < SmallWords.Length; index++)
{
ListViewItem item = new ListViewItem(SmallWords[index]);
if(index < LargeWords.Length)
{
item.SubItems.Add(LargeWords[index]);
}
listView1.Items.Add(item);
}
(var index=0;indexfor
{
ListViewItem=新的ListViewItem(SmallWords[索引]);
如果(索引