如何将List <string>值作为String传递给Other函数</string>

时间:2014-04-02 05:34:40

标签: c# while-loop

我有一个List<>作为lsSplitMember我通过while循环将它发送给函数 作为一个字符串。但它会抛出异常消息&#34; Index was out of range。必须是非负的且小于集合的大小&#34;。 我尝试过以下代码。

//Globally declared variable lsSplitMember
List<String> lsSplitMember=new List<String>();



int ic = lsSplitMember.Count();
while (ic != 0)
{
  Process_Split(lsSplitMember[ic]);
  ic--;
}


Protected void Process_Split(String Member)
{
 //Some Code
}

那么我该如何解决这个问题呢?

5 个答案:

答案 0 :(得分:1)

int ic = lsSplitMember.Count();
while (ic != 0)
{
  Process_Split(lsSplitMember[ic-1]); // your index was off-by-one
  ic--;
}

请注意,使用C#语言功能,这是很多不必要的元代码:

foreach(var text in lsSplitMember)
{
  Process_Split(text);
}

这更容易阅读,并且更不容易出错。如果您需要将列表颠倒过程,则可以先将其反转。

答案 1 :(得分:1)

计数比List的最后一个索引大一,因为它们是零索引的,这是您尝试访问的索引。真的,你应该使用迭代器:

foreach( string s in lsSplitMember )
    Process_Split( s );

答案 2 :(得分:1)

试试这个......

Process_Split(lsSplitMember[ic]);更改为Process_Split(lsSplitMember[ic-1]);

答案 3 :(得分:1)

试试这个

List<String> lsSplitMember=new List<String>();



int ic = lsSplitMember.Count();
while (ic != 0)
{
  ic--;
  Process_Split(lsSplitMember[ic]);

}


Protected void Process_Split(String Member)
{
 //Some Code
}

答案 4 :(得分:0)

lsSplitMember.ForEach(s =>
{
    Process_Split(s);
});

如果lsSplitMember不为空