我今天一直在思考这个问题,我有一种唠叨的感觉,这是一个很容易实现的东西,今天我只是摆脱它,但无论如何,这里是它.
而不是执行类似的事情
// 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#是否具备此类操作的能力?
使用扩展方法:
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)