C# 建议反模式组合ToList+ForEach迭代集合,尤其是对新开发人员。它必须迭代整个集合2倍,分配至少一个可能的多个数组(对于列表的备份数组)以及多个数组副本/大小,分配委托+潜在闭包,涉及2个方法调用和其他可能的事情。请只需将普通的foreach用于O
C# 建议反模式组合ToList+ForEach迭代集合,尤其是对新开发人员。它必须迭代整个集合2倍,分配至少一个可能的多个数组(对于列表的备份数组)以及多个数组副本/大小,分配委托+潜在闭包,涉及2个方法调用和其他可能的事情。请只需将普通的foreach用于O,c#,linq,C#,Linq,建议反模式组合ToList+ForEach迭代集合,尤其是对新开发人员。它必须迭代整个集合2倍,分配至少一个可能的多个数组(对于列表的备份数组)以及多个数组副本/大小,分配委托+潜在闭包,涉及2个方法调用和其他可能的事情。请只需将普通的foreach用于OrderByDescending的结果。如果必须,请使用ToList(即,您需要进一步的结果,并且不需要对根进行多次枚举),但请使用普通的foreach!Ivan我可以问你out var parsedInpt在if声明中做了什么吗?@Navid
建议反模式组合
ToList
+ForEach
迭代集合,尤其是对新开发人员。它必须迭代整个集合2倍,分配至少一个可能的多个数组(对于列表的备份数组)以及多个数组副本/大小,分配委托+潜在闭包,涉及2个方法调用和其他可能的事情。请只需将普通的foreach
用于OrderByDescending
的结果。如果必须,请使用ToList
(即,您需要进一步的结果,并且不需要对根进行多次枚举),但请使用普通的foreach
!Ivan我可以问你out var parsedInpt在if声明中做了什么吗?@Navid,对不起,我不是一个好老师,所以我能做的最好是推荐两篇文章:-官方MS docs,-也许也有帮助。我想说的是,如果传递了需要处理的错误格式(不是整数),int.Parse()将引发异常。如果字符串转换正确,TryParse()将返回true祝您愉快。@pinkfloydx33,不,我不会对一个控制台使用“普通fpreach”。Writeline()命令,lol。问题是关于Linq的,我演示了如何在Linq中使用它。你看到了什么问题?你是坐了几个小时来优化你的代码,还是随心所欲地快速运行,如果真的运行时间过长,就进行优化?
static void Main(string[] args)
{
List<int> list = new List<int>();
var inpt = Console.ReadLine();
var parsedInpt = Int32.Parse(inpt);
list.Add(parsedInpt);
foreach (var item in list)
{
var query = from n in list
orderby n descending
select n;
Console.WriteLine(query);
}
}
var query = from n in list
orderby n descending
select n;
foreach (var item in query) {
Console.WriteLine(query);
}
while(true){
list.Add(int.Parse(Console.ReadLine()));
var orderedList = list.OrderByDescending(x => x);
Console.WriteLine(string.Join(",", orderedList));
}
using System;
using System.Collections.Generic;
using System.Linq;
var list = new List<int>();
var input = "";
do
{
input = Console.ReadLine();
if (int.TryParse(input, out var parsedInpt))
list.Add(parsedInpt);
} while (input.Length > 0);
list.OrderByDescending(x => x)
.ToList()
.ForEach(x => Console.WriteLine(x));