c# 已知一个list包含一个最大和最小的两个数, 传递一个数与值比较 放回新的最大和最小值
时间: 2024-11-15 19:26:36 浏览: 0
在 C# 中,如果你有一个 List<T>,其中 T 是实现了 IComparable 接口的类型(例如整数、浮点数等),你可以通过 LINQ 来找出列表中的最大值和最小值,并且可以在给定新数值时轻松更新这两个值。这里是一个简单的示例:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
// 初始化一个 List 并找到初始的最大值和最小值
List<int> numbers = new List<int> { 5, 2, 9, 1, 7 };
int? minValue = numbers.Min();
int? maxValue = numbers.Max();
// 定义一个函数来接受新值并更新最大最小值
Action<int> updateMinMax = (newNumber) =>
{
if (minValue.HasValue && newNumber < minValue.Value)
{
minValue = newNumber;
}
else if (!minValue.HasValue || newNumber <= maxValue.Value)
{
minValue = newNumber;
}
if (maxValue.HasValue && newNumber > maxValue.Value)
{
maxValue = newNumber;
}
};
// 示例:传递新数值50并与当前最大值比较
updateMinMax(50);
Console.WriteLine($"New minimum value: {minValue}");
Console.WriteLine($"New maximum value: {maxValue}");
// 更新其他值,如40和80
updateMinMax(40);
updateMinMax(80);
Console.ReadLine(); // 等待用户关闭控制台窗口
}
}
```
在这个例子中,`updateMinMax` 函数接收一个整数,然后根据当前的最小值和最大值更新它们。如果新数值小于当前最小值,就更新最小值;如果大于当前最大值,就更新最大值。如果没有设置初始值(minValue 或 maxValue),则会立即更新。
阅读全文