我有以下代码:
public static KeyValuePair<string[], string[]> GetAccounts()
{
string[] usernames = { "user1", "user2", "user3" };
string[] oauths = { "oauth1", "oauth2", "oauth3" };
return new KeyValuePair<string[], string[]> (usernames, oauths);
}
然后我在Main()中调用该函数:
public static void Main(string[] args)
{
KeyValuePair<string[], string[]> users = GetAccounts ();
for (int i = 0; i <= users.Key.Length; i++) {
Console.WriteLine (i);
Console.WriteLine (users.Key.GetValue (i) + " " + users.Value.GetValue (i));
}
}
但是,当我在第二个控制台写入行上获得System.IndexOutOfRangeException时。我不知道为什么这不起作用。我期待看到:
user1 oauth1
user2 oauth2
user3 oauth3
答案 0 :(得分:2)
for (int i = 0; i < users.Key.Length; i++)
更改&lt; =到&lt;在for语句中。
答案 1 :(得分:0)
变量i
不能等于users.Key.Length
。
将for (int i = 0; i <= users.Key.Length; i++)
更改为for (int i = 0; i < users.Key.Length; i++)
答案 2 :(得分:0)
您正在获取System.IndexOutOfRangeException,因为您的for循环运行4次而不是3次,并且在最后一个循环中它搜索不存在的users.Key.GetValue(3)。
您可以使用以下代码来纠正
for (int i = 0; i < users.Key.Length; i++) {
Console.WriteLine (i);
Console.WriteLine (users.Key.GetValue (i) + " " + users.Value.GetValue (i));
}
或
for (int i = 0; i <= users.Key.Length-1; i++) {
Console.WriteLine (i);
Console.WriteLine (users.Key.GetValue (i) + " " + users.Value.GetValue (i));
}