2014-04-02 45 views
1

我有一個List<>爲lsSplitMember我送它通過while循環功能 作爲string.But它會拋出異常消息「Index was out of range。必須是非負面和小於集合的大小「。 我試着用下面的代碼。如何通過列表<String>值作爲字符串的其他功能

//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 
} 

那麼我該如何解決這個問題呢?

回答

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

該計數比List的最後一個索引大1,因爲它們是零索引的,並且這是您嘗試訪問的索引。真的,你應該使用這個迭代器:

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

...除非重要的是要對字符串進行最後處理。 – Rawling

1

嘗試......

變化Process_Split(lsSplitMember[ic]);Process_Split(lsSplitMember[ic-1]);

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 
} 
0
lsSplitMember.ForEach(s => 
{ 
    Process_Split(s); 
}); 

提供lsSplitMember不null

相關問題