C# 无法将文本框行添加到列表<;字符串>;
我一直在使用windows应用程序abd,在尝试向列表中添加文本框行时,我似乎遇到了一个问题,即索引超出了数组的范围: 我目前的代码如下:C# 无法将文本框行添加到列表<;字符串>;,c#,winforms,C#,Winforms,我一直在使用windows应用程序abd,在尝试向列表中添加文本框行时,我似乎遇到了一个问题,即索引超出了数组的范围: 我目前的代码如下: if (NameTB.Lines.Count() > 0) for (int i = 1; 1 <= NameTB.Lines.Count(); i++) nameList.Add(NameTB.Lines[i].Replace(Environment.NewLine, "
if (NameTB.Lines.Count() > 0)
for (int i = 1; 1 <= NameTB.Lines.Count(); i++)
nameList.Add(NameTB.Lines[i].Replace(Environment.NewLine, "").Trim());
if(NameTB.Lines.Count()>0)
对于(int i=1;1 0)
对于(int i=1;1 0)
对于(inti=1;111使用以下方法:
if (NameTB.Lines.Count() > 0)
for (int i = 0; i < NameTB.Lines.Count(); i++) //or i <= NameTB.Lines.Count() - 1
nameList.Add(NameTB.Lines[i].Replace(Environment.NewLine, "").Trim());
到
i
if (NameTB.Lines.Count() > 0)
for (int i = 0; i < NameTB.Lines.Count(); i++) //or i <= NameTB.Lines.Count() - 1
nameList.Add(NameTB.Lines[i].Replace(Environment.NewLine, "").Trim());
到
i行的最大数组索引。
。正确的for循环构造应如下所示:
if (NameTB.Lines.Count() > 0)
{
for (int i = 0; i < NameTB.Lines.Count(); i++)
{
nameList.Add(NameTB.Lines[i].Replace(Environment.NewLine, "").Trim());
}
}
if(NameTB.Lines.Count()>0)
{
对于(int i=0;i
另见:
请注意,数组是以零为基的,您的第二个参数似乎创建了一个无限循环,该循环超过了行的最大数组索引。正确的for循环构造应如下所示:
if (NameTB.Lines.Count() > 0)
{
for (int i = 0; i < NameTB.Lines.Count(); i++)
{
nameList.Add(NameTB.Lines[i].Replace(Environment.NewLine, "").Trim());
}
}
if(NameTB.Lines.Count()>0)
{
对于(int i=0;i
另见:
试试这个:
if (NameTB.Lines.Count() > 0)
for (int i = 1; i <= NameTB.Lines.Count() - 1; i++)
nameList.Add(NameTB.Lines[i-1].Replace(Environment.NewLine, "").Trim());
if(NameTB.Lines.Count()>0)
对于(inti=1;i请尝试以下方法:
if (NameTB.Lines.Count() > 0)
for (int i = 1; i <= NameTB.Lines.Count() - 1; i++)
nameList.Add(NameTB.Lines[i-1].Replace(Environment.NewLine, "").Trim());
if(NameTB.Lines.Count()>0)
对于(int i=1;i,在本例中,他还将获得indexootfrangeexception
,因为在本例中,他还将获得indexootfrangeexception
,因为在for
循环条件1中,您可以通过var lines=NameTB.Text.Split(Environment.NewLine.)选择(line=>line.Trim()).ToArray();
在中,对于循环条件1,您可以通过var lines=NameTB.Text.Split(Environment.NewLine)获取所有行。选择(line=>line.Trim()).ToArray();
您应该解释您的答案。另外,我通常使用I<[…]。Count()
而不是I是的,您可以使用Count()或Count()-1.我只想让它与原始代码相似,这样你就可以看到不同之处。;)你应该解释你的答案。另外,我通常使用I<[…]。Count()
而不是I是的,你可以使用Count()或Count()-1。我只想让它与原始代码相似,这样你就可以看到不同之处。;)您真的应该提到错误的产生,因为OP的for循环中的cacel条件是将Count
与编号1
进行比较,而不是索引变量。“它可能导致无限循环,但它永远不会引发IndexOutOfRangeException”是的,这正是无限增加i
的结果。如果循环从未停止,i
将在某个点上大于Count
我在向下投票,因为你的答案没有解决问题的核心。核心是循环的取消条件,而不是起始值。你的帖子已经一个工作代码,但是您没有解释为什么首先出现问题,如果不是必需的,那么可能值得注意,因为它包含在for
循环的continue条件中。您确实应该提到错误的产生,因为OP的for循环中的cacel条件是Count 使用数字1
而不是索引变量。“它可能导致无限循环,但它永远不会引发IndexOutOfRangeException”是的,这正是无限增加i
的结果。如果循环从未停止,i
将在某个点上大于Count
我在向下投票,因为你的答案没有解决问题的核心。核心是循环的取消条件,而不是起始值。你的帖子已经一个有效的代码,但您没有解释问题首先出现的原因。如果不是必需的,则可能值得注意,因为它包含在for
循环的continue条件中
i < NameTB.Lines.Count(); //or i <= NameTB.Lines.Count() - 1;
if (NameTB.Lines.Count() > 0)
{
for (int i = 0; i < NameTB.Lines.Count(); i++)
{
nameList.Add(NameTB.Lines[i].Replace(Environment.NewLine, "").Trim());
}
}
if (NameTB.Lines.Count() > 0)
for (int i = 1; i <= NameTB.Lines.Count() - 1; i++)
nameList.Add(NameTB.Lines[i-1].Replace(Environment.NewLine, "").Trim());