[]将IEnumerable与一项结合使用会更好:yield return或return []?

问题描述 投票:9回答:4

这是那些“ 您可以做很多事情的方法”问题之一。考虑以下代码:

protected virtual IEnumerable<ScriptReference> GetScriptReferences()
{
    ScriptReference referece = new ScriptReference();
    referece.Assembly = "FeyenoordEnabled";
    referece.Name = "FeyenoordEnabled.PassTextBox.js";

    return new ScriptReference[] { referece }; 
}

protected virtual IEnumerable<ScriptReference> GetScriptReferences()
{
    ScriptReference referece = new ScriptReference();
    referece.Assembly = "FeyenoordEnabled";
    referece.Name = "FeyenoordEnabled.PassTextBox.js";

    yield return referece;
}

我只需要返回一个项目。第一段代码返回一个包含单个项目的数组,第二段代码产生该项目。 什么更好,为什么呢?

c# .net ienumerable yield
4个回答
5
投票

个人资料个人资料。这是使用单声道的A-B比较:


8
投票

yield是一个非常昂贵的关键字。您要告诉编译器做很多事情。如果性能不是问题,请使用更优雅的代码。但是,如果性能成为问题,请坚持使用阵列。


4
投票

当您使用创建的数组调用它时,第一个直接返回。


0
投票

Benchmark.NET分析后,很明显,使用数组作为单个值比使用yield return更快。

© www.soinside.com 2019 - 2024. All rights reserved.