将方法的收集结果作为 params 参数传递
Pass the collection result of a method as params argument
我有一个接受参数的方法,我想为这些参数提供另一种方法。示例:
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,同样的问题。有没有办法将方法的结果用作参数参数?
编辑:当您首先传递另一个参数时会出现问题。问题是我需要继续访问第一个参数而不是其他参数。这可以通过让方法创建所有参数、单独调用它并保留对第一个元素的引用来完成。
我想你想要
Process(GetWords().ToArray());
我有一个接受参数的方法,我想为这些参数提供另一种方法。示例:
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,同样的问题。有没有办法将方法的结果用作参数参数?
编辑:当您首先传递另一个参数时会出现问题。问题是我需要继续访问第一个参数而不是其他参数。这可以通过让方法创建所有参数、单独调用它并保留对第一个元素的引用来完成。
我想你想要
Process(GetWords().ToArray());