【问题标题】:whats wrong with my code? i just started with C# and i dont know whats going on [duplicate]我的代码有什么问题?我刚开始使用 C#,我不知道发生了什么 [重复]
【发布时间】:2021-12-24 03:03:52
【问题描述】:

我刚开始使用 C# 进行编码,但一直收到此错误“索引超出了数组的范围。”我不知道我做错了什么有人能帮忙吗?我不断收到这条消息

索引超出了数组的范围。

我试着环顾四周,但没有找到任何东西。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        ChromeDriver driver = new ChromeDriver(@"C:\webdrivers");
        //textbox input
       // string quest = question1.Text;

        //random choise
     
        var random = new Random();
        var Names = question1.Text.Split();
        int index = random.Next();

//the error is here\\
        string randomName = Names[index];
        
        driver.FindElement(By.ClassName("whsOnd")).SendKeys(randomName);
        
        
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {

        
        ChromeDriver driver = new ChromeDriver(@"C:\webdrivers");
        ChromeDriver drv; Thread th;
        string url = "google.com";

        driver.Navigate().GoToUrl(url);

    }
}

【问题讨论】:

  • 将 int index = random.Next(); 更改为 int index = random.Next(Names.Length);
  • random.Next() 会给你一个介于 0 和 2147483647 之间的数字,Names 数组中没有那么多项目。
  • 调试器是你的朋友。在string randomName = Names[index]; 创建一个断点并查看var Names 存储了多少项目以及您的index 值是多少。如果 index 大于 Names 的数量或小于 0 - 这就是您获得异常的原因。
  • 我还有 1 个问题我有一个列表,该列表连接到一个文本框,该部分工作正常,但问题是当我发送名称时,我希望它选择第一个和第二个,依此类推...我需要编写发送每个名称所需的代码量还是有办法解决它?对不起,如果这个问题很愚蠢但真的很困惑。对不起。

标签: c# selenium error-handling


【解决方案1】:

“Index was outside the bounds of the array”表示生成的随机索引大于您的Names数组的大小

【讨论】:

  • 这更像是一个评论而不是一个答案。事实上,一些 cmets 是更好的答案(而且,不,我不是反对者)。
  • 但它确实回答了“我的代码出了什么问题?”的问题。它不提供解决方案,但确实帮助 OP 找到解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多