这是那些“ 您可以做很多事情的方法”问题之一。考虑以下代码:
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;
}
我只需要返回一个项目。第一段代码返回一个包含单个项目的数组,第二段代码产生该项目。 什么更好,为什么呢?
个人资料个人资料。这是使用单声道的A-B比较:
yield
是一个非常昂贵的关键字。您要告诉编译器做很多事情。如果性能不是问题,请使用更优雅的代码。但是,如果性能成为问题,请坚持使用阵列。
当您使用创建的数组调用它时,第一个直接返回。
用Benchmark.NET分析后,很明显,使用数组作为单个值比使用yield return
更快。