我可以使用foreach和初始声明重塑该代码吗?

Em1*_*Em1 2 c# arrays foreach

我必须设置一个期望获取数组的属性,因此我需要一个类X的实例数组,如下所示:

X[] x = new X[]
{
  new X () { Parameter = parameter },
  new X () { Parameter = parameter2 }
  // ...
}
Run Code Online (Sandbox Code Playgroud)

由于参数是在运行时生成并存储在列表中的,因此应该动态创建实例.我用这个代码得到了我的预期目标

X[] x = new X[list.Count];
for (int i = 0; i < list.Count; i++)
{
  x[i] = new X() { Parameter = list.ElementAt(i) }
}
Run Code Online (Sandbox Code Playgroud)

这些线路完成了他们的工作,但是,我对这些线路并不满意.我想改变一些东西,即看起来像伪代码的代码

X[] x = new X[]
{
  foreach (var item in list)
  {
    new X () { Parameter = item }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码不起作用.有没有办法实现这样的代码?

Mar*_*ell 9

怎么样:

X[] x = list.Select(param => new X { Parameter = param }).ToArray();
Run Code Online (Sandbox Code Playgroud)

在这里,.Select(...)创建一个投影,即列表中每个项目执行new X {...}操作的序列; 的.ToArray()该序列,以数组转换.

  • @MarcGravell如果类型名称实际上是"X",那么只有相同数量的字符,我当然希望它不是(除非它是通用的,这似乎不太可能). (2认同)