优化下面的代码using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<int> list1 = new List<int> { 1, 2, 3, 4, 5 }; List<int> list2 = new List<int> { 3, 4, 5, 6, 7 }; // 找出在list1中存在但在list2中不存在的元素 IEnumerable<int> difference1 = list1.Except(list2); // 找出在list2中存在但在list1中不存在的元素 IEnumerable<int> difference2 = list2.Except(list1); Console.WriteLine("list1相对于list2的差异:"); foreach (int num in difference1) { Console.WriteLine(num); } Console.WriteLine("list2相对于list1的差异:"); foreach (int num in difference2) { Console.WriteLine(num); } } }
时间: 2024-04-08 07:35:41 浏览: 117
第2章.C# 3.0程序设计基础
上述代码是使用LINQ库中的`Except`方法来计算两个列表之间的差异。如果你希望优化该代码,可以考虑使用更高效的算法来解决这个问题,而不是依赖LINQ库。
以下是一个使用双重循环来计算两个列表之间差异的优化冒泡排序算法的示例代码:
```csharp
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
List<int> list1 = new List<int> { 1, 2, 3, 4, 5 };
List<int> list2 = new List<int> { 3, 4, 5, 6, 7 };
List<int> difference1 = GetDifference(list1, list2);
List<int> difference2 = GetDifference(list2, list1);
Console.WriteLine("list1相对于list2的差异:");
PrintList(difference1);
Console.WriteLine("list2相对于list1的差异:");
PrintList(difference2);
}
static List<int> GetDifference(List<int> list1, List<int> list2)
{
List<int> difference = new List<int>();
foreach (int num in list1)
{
if (!list2.Contains(num))
{
difference.Add(num);
}
}
return difference;
}
static void PrintList(List<int> list)
{
foreach (int num in list)
{
Console.WriteLine(num);
}
}
}
```
在上述代码中,我们定义了一个`GetDifference`方法,该方法使用双重循环遍历`list1`中的元素,并检查它们是否存在于`list2`中。如果一个元素在`list2`中不存在,则将其添加到`difference`列表中。
通过使用更直接的循环和条件判断,我们避免了使用LINQ库中的`Except`方法,从而提高了代码的性能。
希望这个优化后的示例能满足你的需求。如果有任何疑问,请随时提问。
阅读全文