【问题标题】:Why am I getting System.ArgumentOutOfRangeException?为什么我会收到 System.ArgumentOutOfRangeException?
【发布时间】:2014-08-05 15:42:04
【问题描述】:

我已经阅读了与我类似的问题,但还没有找到解决方案来指出我的问题,或者让我更容易找到它。

我知道该错误表明我正在尝试从我的循环中获取某些内容,请您指出我哪里出错并给出任何指示以更改什么等。

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();
        }
    }
}

【问题讨论】:

标签: c# arrays string loops


【解决方案1】:

基本上,您的 sb 仅与其中的文本一样“大”,因此当您尝试设置第 i 个字符时,您会遇到问题,因为数组还没有那么大。

这是重现错误的最少代码

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

注意,您的代码还有很多其他问题,但这就是为什么您会收到您看到的错误。

【讨论】:

  • 添加快速修复 (Append()),我会支持你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 2023-04-05
  • 2016-08-21
  • 2014-07-04
  • 2020-06-06
  • 2018-12-26
  • 2021-03-05
相关资源
最近更新 更多