请忽略此问题中的代码可读性.
在性能方面,如下所示代码应如下所示:
int maxResults = criteria.MaxResults;
if (maxResults > 0)
{
while (accounts.Count > maxResults)
accounts.RemoveAt(maxResults);
}Run Code Online (Sandbox Code Playgroud)
或者像这样:
if (criteria.MaxResults > 0)
{
while (accounts.Count > criteria.MaxResults)
accounts.RemoveAt(criteria.MaxResults);
}Run Code Online (Sandbox Code Playgroud)
?
编辑:criteria是一个class,MaxResults是一个简单的整数属性(即,public int MaxResults { get { return _maxResults; } }.
C#编译器是否将其MaxResults视为黑盒并每次都进行评估?或者它是否足够聪明,可以发现我有3次调用同一个属性而没有在调用之间修改该属性?如果MaxResults是一块田地怎么办?
优化法则之一是预先计算,所以我本能地像第一个列表那样编写这个代码,但我很好奇是否自动为我做了这种事情(再次忽略代码可读性).
(注意:我对听到'微优化'论证并不感兴趣,这个论点在我发布的特定情况下可能是有效的.我只是想了解正在发生或未发生的一些理论.)