优化这段代码public class Program { public static void Main() { List<int> scores = new List<int> { 20, 20, 21, 22, 98, 39, 98, 98 }; string concatenated = string.Join("", scores.Select(s => s.ToString()).Distinct()); List<int> digits = concatenated.Select(c => int.Parse(c.ToString())).ToList(); digits.Sort(); digits.Reverse(); int maxValue = int.Parse(string.Join("", digits)); Console.WriteLine("最大值: " + maxValue); } }
时间: 2024-04-11 17:33:55 浏览: 146
优化代码
你可以对代码进行如下优化:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<int> scores = new List<int> { 20, 20, 21, 22, 98, 39, 98, 98 };
int maxValue = GenerateMaxValue(scores);
Console.WriteLine("最大值: " + maxValue);
}
public static int GenerateMaxValue(List<int> scores)
{
List<int> digits = scores.Distinct()
.OrderByDescending(s => s)
.SelectMany(s => s.ToString())
.Select(c => int.Parse(c.ToString()))
.ToList();
return int.Parse(string.Join("", digits));
}
}
```
这段代码将生成最大值的逻辑封装在了一个新的方法 `GenerateMaxValue` 中。在这个方法中,首先使用 LINQ 操作符 `Distinct` 删除重复的数字,并使用 `OrderByDescending` 按降序对数字进行排序。然后,通过 `SelectMany` 将每个数字转换为字符数组,再使用 `Select` 将字符转换为整数,并将结果存储在 `digits` 列表中。最后,使用 `string.Join` 将数字连接起来,并通过 `int.Parse` 将其转换为整数返回。
这样做的好处是将代码分解成更小的可读性更高的部分,并且可以在需要生成最大值的其他地方重复使用 `GenerateMaxValue` 方法。
阅读全文