C#/ PHP:在C#中是否有相当于PHP的array_map()函数?

Ric*_*gan 4 php c# arrays

我今天一直在思考这个问题,我有一种唠叨的感觉,这是一个很容易实现的东西,今天我只是摆脱它,但无论如何,这里是它.

而不是执行类似的事情

// assume that I have a populated string[] myString
for (int i = 0; i < myString.Length; i++) {
    myString[i] = myString[i].Equals(string.Empty) ? "foo" : "bar;
}
Run Code Online (Sandbox Code Playgroud)

我想做一些像PHP的array_map(),它(我认为)比显式迭代执行得更快.

C#是否具备此类操作的能力?

Nul*_*ion 6

使用扩展方法:

Func<string, string> mapFun = n => n.Equals(string.Empty) ? "foo" : "bar";
Enumerable<string> newNames = names.Select(mapFun);
Run Code Online (Sandbox Code Playgroud)

你也可以Func直接传递:

IEnumerable<string> newNames = names.Select(n => n.Equals(string.Empty) ? "foo" : "bar");
Run Code Online (Sandbox Code Playgroud)

正如在ideone上看到的那样.以下是一些或多或少等效的其他功能:

PHP                C#
-------------------------------
array_map()       .Select()
array_filter()    .Where()
array_reduce()    .Aggregate()
Run Code Online (Sandbox Code Playgroud)

MSDN参考:

可枚举的方法