【发布时间】:2011-08-08 20:51:28
【问题描述】:
我想知道这两者的区别:
为:
string[] arrayOld = new string(){"This", "other", "aaa", ...};
string[] arrayNew = new string[arrayOld.lenght];
for(int i = i < arrayOld.lenght; i++){
arrayNew[i] = arrayOld[i];
}
FOREACH:
string[] arrayOld = new string(){"This", "other", "aaa", ...};
List<string> listNew = new List<string>();
foreach(string val in arrayOld){
listNew.add(val);
}
string[] arrayNew = listNew.toArray();
LINQ:
string[] arrayOld = new string(){"This", "other", "aaa", ...};
string[] arrayNew = (from val in arrayOld select val).toArray();
我不想复制数组...
想法是从arrayOld中的对象构造新对象(可以不同于字符串,可以包含其他属性...)
我需要表现,所以...
¿什么是最好的选择,为什么?
【问题讨论】:
-
你以前用过
StopWatch吗? -
这段代码:
(from val in arrayOld select val).toArray();是一个很好的例子,说明人们为什么应该熟悉非查询样式的 LINQ。也就是说:arrayOld.ToArray(); -
@ChaosPandion - 在 OPs 防御中,他的代码被正确缩进。 StackOverflow 中有一个错误,它不会格式化编号/项目符号列表中的代码。
-
为什么这个问题被否决并投票结束?这家伙在问一个有效的问题。
-
@Robaticus:我可以想到几个原因:1)问题要求最好,但没有说哪种最好。没有明确的目的没有最好的。 2) 最初,问题的格式不正确且未指定。 3) 现在它有几个示例与问题不匹配的代码(请阅读最后一段。) 4) 我不喜欢这样的问题:“你能编译并运行它吗?让我看看哪个最好?” (这是公认的答案所做的)。 SO 不是每个人的个人人工编译器。
标签: c# .net linq performance foreach