Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最好在对象上使用静态可枚举FirstOrDefault';什么方法?_C#_.net_Performance_Linq - Fatal编程技术网

C# 最好在对象上使用静态可枚举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

当我在处理一些代码时,Resharper有一个“建议”使用静态Enumberable.FirstOrDefault()

最初代码与此类似:

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命名空间的扩展方法。查看创建扩展方法的语法: