C# 通过从另一个数组转换来初始化数组

C# 通过从另一个数组转换来初始化数组,c#,arrays,delegates,C#,Arrays,Delegates,有没有一种方法可以从一个不同类型的数组中初始化一个类型的数组,我可以提供一个委托/谓词来转换每个元素 class foo { public foo(string s); } string[] strs = {"abc", "def", "ghi"}; foo[] foos = {an array of new foos, created with each of my strs}; 显然,我可以只做一个for循环,但是考虑到C所能做的一切,这个循环必须有一个单行程序。可能是这样的: fo

有没有一种方法可以从一个不同类型的数组中初始化一个类型的数组,我可以提供一个委托/谓词来转换每个元素

class foo
{
  public foo(string s);
}

string[] strs = {"abc", "def", "ghi"};
foo[] foos = {an array of new foos, created with each of my strs};
显然,我可以只做一个for循环,但是考虑到C所能做的一切,这个循环必须有一个单行程序。可能是这样的:

foo[] foos = strs.ToArray<foo>(s => new foo(s));
您可以使用Select扩展方法从字符串投影到Foo,如下所示:

Foo[] foos = strs.Select(x => new Foo(x)).ToArray();

foo[]foos={new foostrs[0],new foostrs[1],new foostrs[2]};strs.Selectx=>new Foox.toArrai假设我应该为任意长度的strs指定,现在我意识到我以前确实做过这件事。我觉得Select可能是这个方法的错误名称,但我想不出更好的方法,除了Project。无论如何,谢谢你@RichardRobinson这个名字是有争议的,实际上在java中,Select被称为map,即从一种类型映射到另一种类型。就我个人而言,我觉得Select是最合适的名字,因为这正是我们正在做的。