【问题标题】:Pass the collection result of a method as params argument将方法的收集结果作为 params 参数传递
【发布时间】:2015-03-31 09:22:50
【问题描述】:

我有一个接受参数的方法,我想为这些参数提供另一种方法。示例:

public void Process(params string[] words)
{
    // do some stuff
}

public IEnumerable<string> GetWords()
{
    yield return "test";
}

Process(GetWords()); // Error collection of strings must be passed individually

但是这是不允许的,因为结果被认为是 IEnumerable 类型的单个参数,而不是一组参数类型字符串。我试过使用 ToArray 和 ToList,同样的问题。有没有办法将方法的结果用作 params 参数?

编辑:当您首先传递另一个参数时会出现问题。问题是我需要继续访问第一个参数而不是其他参数。这可以通过让方法创建所有参数、单独调用它并保持对第一个元素的引用来完成。

【问题讨论】:

  • 你的意思是它应该和调用Process("first", "test") 一样,就像 Process(Enumerable.Repeat("first", 1).Concat(GetWords()).ToArray()) 一样吗?

标签: c# collections params


【解决方案1】:

我想你想要

    Process(GetWords().ToArray());

【讨论】:

  • 你期望的输出是什么?
  • 哦那是因为我还想先添加另一个参数,没想到这很重要。我将编辑问题。
  • 不管怎样,你对第一个问题的回答是正确的。
猜你喜欢
  • 2014-03-09
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2021-03-09
  • 2016-05-06
  • 2018-09-09
相关资源
最近更新 更多