【问题标题】:How to initialise a variable amount of class instances using array entries as the initialization values for each instance如何使用数组条目作为每个实例的初始化值来初始化可变数量的类实例
【发布时间】:2018-12-18 18:50:08
【问题描述】:

我想创建可变数量的 ChromeDriver 实例并为每个实例提供自己的选项(来自我之前创建的选项数组)

目前我的代码如下所示:

ChromeDriver[] driver = new ChromeDriver[4] 
{
    new ChromeDriver(options[0]),
    new ChromeDriver(options[1]),
    new ChromeDriver(options[2]),
    new ChromeDriver(options[3])
};

但问题是“4”应该是可变的。

我的方法是在 {} 中使用 foreach 和 while 循环来初始化单个 ChromeDriver,但 c# 不允许这样做。

我不确定是否有办法在没有大量解决方法的情况下解决这个问题

提前感谢您的帮助

【问题讨论】:

    标签: c# initialization arguments declaration


    【解决方案1】:

    假设driver 的长度应与您拥有的options 的数量相同:

    ChromeDriver[] driver = new ChromeDriver[options.Length];
    for (int i = 0; i < options.Length; i++)
        driver[i] = new ChromeDriver(options[i]);
    

    【讨论】:

    • 这不起作用,因为您已经在第一行初始化了 driver[]。
    • 抱歉,我错误地将()添加到new ChromeDriver[options.Length];的末尾。尝试修改,它会工作
    • 非常感谢我花了半天时间。你能告诉我在哪里可以找到声明和初始化的基本规则吗?我的意思是即使代码有效,我仍然不明白为什么在创建数组时没有创建实例
    • @Rjinxil 没问题。这在这种情况下尤其重要:数值数组元素的默认值设置为零,参考元素设置为 null。 因此,新的“对象”数组将其元素设置为 NULL默认。文章在这里:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays
    【解决方案2】:

    您可以使用简单的 LINQ 语句来创建数组。

    var driver = options.Select(x => new ChromeDriver(x)).ToArray();
    

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多