在Ruby中,你可以使用地图/收集方法的阵列上进行修改:C#阵图/收集
a = [ "a", "b", "c", "d" ]
a.collect! {|x| x + "!" }
a #=> [ "a!", "b!", "c!", "d!" ]
有一个简单的方法在C#这样做吗?
在Ruby中,你可以使用地图/收集方法的阵列上进行修改:C#阵图/收集
a = [ "a", "b", "c", "d" ]
a.collect! {|x| x + "!" }
a #=> [ "a!", "b!", "c!", "d!" ]
有一个简单的方法在C#这样做吗?
a = a.Select(s => s + "!").ToArray();
var a=new[]{"a","b","c","d"};
a.Select(x=>x+"!");
是的,使用LINQ(但这不会修改原来的集合)更直观。
var a = a.ConvertAll(x => x + "!").ToArray();
我更喜欢使用ConvertAll,因为它的速度更快,我相信你可以试试这个
var a = new[] { "a", "b", "c", "d" };
a = a.Select(p => p + "!").ToArray();
是什么让这更快或更直观? – 2012-05-11 15:42:51
它更快,因为您不必在此期间创建延迟加载的枚举。 IMO更具可读性,因为它确切地说明了它的功能。地图是大多数其他语言使用的地图。 – mythz 2012-05-11 18:26:12
那么不会'Map'更直观? – 2012-10-15 18:51:28
完美!感谢您及时的回复! – RyanScottLewis 2010-02-18 00:36:25
请注意,这会创建一个新数组,并且不会修改原始数组,如OP问题中所述。 – spender 2010-02-18 00:37:00
@spender:非常真实。 'a ='在开始时只负责将这个特定的参考点指向新的数组,如果还有对原始数组的其他引用,它们将不会被更新。 – Tanzelax 2010-02-18 00:44:24