C# 最好在对象上使用静态可枚举FirstOrDefault';什么方法?
当我在处理一些代码时,Resharper有一个“建议”使用静态Enumberable.FirstOrDefault() 最初代码与此类似:C# 最好在对象上使用静态可枚举FirstOrDefault';什么方法?,c#,.net,performance,linq,C#,.net,Performance,Linq,当我在处理一些代码时,Resharper有一个“建议”使用静态Enumberable.FirstOrDefault() 最初代码与此类似: var myCountry = myCountryRepository.GetByCode(code); // returns IEnumerable of Country Country country = myCountry.FirstOrDefault(); 建议将最后一行改为: Country country = Enumerable.FirstO
var myCountry = myCountryRepository.GetByCode(code); // returns IEnumerable of Country
Country country = myCountry.FirstOrDefault();
建议将最后一行改为:
Country country = Enumerable.FirstOrDefault(myCountry);
使用静态方法是否有性能提升?否,没有性能提升:两个调用完全相同。当你写作时
Country country = myCountry.FirstOrDefault();
编译器识别您正在调用扩展方法,并将其悄悄转换为:
Country country = Enumerable.FirstOrDefault(myCountry);
不,它编译成相同的东西。Resharper只是给你一个选择。现在,它将“建议”您将其更改回。很像它会告诉您,
var
可以更改为显式类型,反之亦然。什么版本的ReSharper可以做到这一点?我在我的8.2安装的设置中找不到该复选框。@AntP您应该将其作为一个答案发布,因为它在解释整个问题方面比现有答案做得更好。@dasblinkenlight Every version afaik-如果您将鼠标悬停在var
上并按Alt+Enter(默认情况下),它将为您提供“快速修复”-它们不一定是建议,只是等效转换的捷径。@AntP啊,我明白你的意思。我认为OP所说的是一个在代码中有一行扭曲的建议,而不是一个快速重构的选项。myCountry.FirstOrDefault()-FirstOrDefault是System.Linq命名空间的扩展方法。查看创建扩展方法的语法: