这个ReSharper片段“转换为方法组”实际上是做什么的?

时间:2011-08-24 20:55:05

标签: c# .net resharper method-group

enter image description here

更改前的代码:

List<ProductBrandModel> model = brands.Select(item => Mapper.Map<ProductBrand, ProductBrandModel>(item)).ToList();

改进后的代码:

List<ProductBrandModel> model = brands.Select(Mapper.Map<ProductBrand, ProductBrandModel>).ToList();

这是做什么的?是否隐式在brands集合中的每个项目上运行映射?

2 个答案:

答案 0 :(得分:10)

由于您直接将lambda表达式的参数传递给Mapper.Map方法,因此它完全等同于将此方法直接指定为Select的投影。 Mapper.Map的签名与Func<TSource, TResult>委托兼容,因此R#建议直接使用方法组而不是lambda表达式。

答案 1 :(得分:3)

第一行创建一个立即调用Mapper.Map函数的方法。这是不必要的,因为Mapper.Map方法匹配Select的预期定义,并且可以直接调用Mapper.Map。 Resharper对其进行更改,以便只调用1个方法,并且编译器不会生成额外的方法。