我是C#的新手,并且在各处搜索了此内容,但如果已经询问,找不到答案。我试图用一个for循环来比较两个列表:在两个列表中发现不同的匹配<string>
IList<string> List1 = new List<string> { usr.User1, usr.User2, usr.User3, usr.User4 };
IList<string> List2 = new List<string>{ "Tim", "Bob", "Brian", "Paul" };
基本上我想那里只有4点可能的匹配,所以只有这些可能的匹配应该算:
usr.User1 == "Tim", // e.g. User1 has to be Tim etc.
usr.User2 == "Bob",
usr.User3 == "Brian",
usr.User4 == "Paul"
我将理想喜欢用0-4的值返回一个int,因此,如果所有的比赛的上面有成功,那么它将返回4,如果没有成功匹配则返回0等
我曾尝试:
int score = 0;
for (int i = 0; i <= List2.Count; i++)
{
if (List1[i] == List2[i])
{
score++;
}
}
但目前正在取得IndexOutOfRangeException。非常感谢。
异常的原因是'<= List2.Count'。如果count为4,则有效索引值为0,1,2和3. – 2015-02-06 16:27:25
@ User9876867欢迎使用堆栈溢出。您的问题非常接近[XY问题](http://meta.stackexchange.com/a/66378/171858)。在你的例子中,你正在问如何使用不仅不需要的[tag:for-loop]来完成它,但是有更好的方法来解决实际问题,这很简单*如何通过索引匹配列表中的值*。 – 2015-02-06 16:33:56
嗨我被告知使用for循环,因为它更具人性化可读性和可调试性。 – 2015-02-06 16:38:31