【问题标题】:pass into the constructor across an array跨数组传递给构造函数
【发布时间】:2009-06-01 11:15:45
【问题描述】:

如果我有一个类 FooWrapper 在构造过程中接收一个 Foo:

Foo foo = new Foo();
FooWrapper fooWrapper = new FooWrapper(foo);

通常,我从一些 API 中得到一组 Foo 的返回

Foo[] foos = _api.GetFoos();

我是否可以通过传入适当的 Foo 对象来构建一个 FooWrappers 数组,而不是简单地循环遍历每个对象?

【问题讨论】:

  • 您能否再解释一下您的问题?

标签: c# arrays


【解决方案1】:

您可以使用Array.ConvertAll 方法。

FooWrapper[] wfoos = Array.ConvertAll<Foo, FooWrapper>(foos, delegate(Foo foo){return new FooWrapper(foo);});

【讨论】:

  • 您可以用 lambda 替换最后一个委托参数:(f => new FooWrapper(f))。这是一个品味问题。
  • Array.ConvertAll 方法是在 Framework 2.0 中引入的,因此它应该在 V2005 中工作。 +1
【解决方案2】:

我认为 arul 有一个很好的答案,但我想提出一个问题:使用泛型和/或 LINQ 真的“更好”吗?

我会在这里使用一个简单的 for 循环。主要原因是可读性。

【讨论】:

  • 我同意你的观点。 . .我只是更好奇是否有更简洁的方式在一行代码中做到这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 2014-03-07
相关资源
最近更新 更多