我不确定这里是否可以提出这类问题,但我只是想知道两个代码片段之间的区别.
当我在SO中浏览这里的问题时,我发现这篇文章: 如何在c#中找到名称以某个字符串开头的HTML元素的数量?
用户回答了这个问题:
var dictionary = Request.Form.Keys
.Cast<string>()
.Where(x => x.StartsWith("abc"))
.ToDictionary(x => x, x => Request.Form[x]);
Run Code Online (Sandbox Code Playgroud)
返回一个字典,其中包含以"abc"开头的所有表单元素的键/值.
更新:可怜的OP正在使用.Net 2.0.所以这是老派的回答:
Dictionary<string, string> keys = new Dictionary<string, string>();
foreach (string key in request.Form.Keys)
{
if (key.StartsWith("abc"))
keys[key] = request.Form[key];
}
Run Code Online (Sandbox Code Playgroud)
哪两个更快执行或更优化?我们应该永远不会使用旧的吗?
这是"过度优化"的一个很好的例子.代码不在内部循环中执行,如果您对其进行分析,您将看到它远低于应用程序执行时间的0.1%.
因此,在这种情况下,易读性,可靠性和可维护性是更大的问题.鉴于这两个片段都能可靠地完成这项工作,从那时起你忘记了这段代码是如何运作的,你想要阅读哪一段?