为什么我收到System.ArgumentOutOfRangeException?

时间:2014-08-05 15:42:05

标签: c# arrays string loops

我已经阅读了与我类似的问题,并且尚未找到解决方案来指出我的问题,或者让我更容易找到。

我知道错误说我试图从我的循环中找到一些东西你能指出我出错的地方吗,并指出要改变的地方等。

public int passSize;
public string availableChars = "AaBbCcDdEeFfGgHhIuJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789!£$%^&*()_-+=;:'@#~{[]}/?.>,<|¬`";

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = "";

    for (int i = 1; i < 9; i++)
    {
        if (passSize == 0)
            MessageBox.Show("You must select a password size", "Error");
        else if (passSize == i)
        {
            StringBuilder sb = new StringBuilder("");
            Random random = new Random();
            int r = random.Next(0, availableChars.Length - 1);
            sb[i] = availableChars[r];
            textBox1.Text = sb.ToString();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

基本上你的某人只是&#39;大&#39;作为其中的文本,所以当你尝试设置第i个字符时,你就会遇到问题,因为数组还不是很大。

这是重现错误的最小代码

var sb = new StringBuilder("");
sb[6]='a'; //Will throw

请注意,您的代码存在许多其他问题,但这是为什么您收到的错误。