gpt4 book ai didi

c# - 为什么 C# 的 Math.Min/Max 不是可变参数?

转载 作者:IT王子 更新时间:2023-10-29 04:33:16 24 4
gpt4 key购买 nike

我需要找到 3 个值之间的最小值,最后我做了这样的事情:

Math.Min(Math.Min(val1, val2), val3)

这对我来说似乎有点傻,因为其他语言为此使用可变参数函数。不过,我非常怀疑这是一个疏忽。

为什么一个简单的 Min/Max 函数不应该是可变的?对性能有影响吗?是否有我没有注意到的可变版本?

最佳答案

如果它是一个集合(IEnumerable<T> 的子类),可以很容易地使用 System.Linq 中的函数图书馆

int min = new int[] {2,3,4,8}.Min();

此外,您很容易自己实现这些方法:

public static class Maths {

public static T Min<T> (params T[] vals) {
return vals.Min();
}
public static T Max<T> (params T[] vals) {
return vals.Max();
}

}

您可以只用简单的标量调用这些方法,所以 Maths.Min(14,25,13,2)会给 2 .

这些是通用方法,因此无需为每种类型的数字( int , float ,...)实现此方法

我认为这些方法一般没有实现的基本原因是,每次调用此方法时,都应该创建一个数组(或至少是一个 IList 对象)。通过保持低级方法可以避免开销。但是,我同意可以将这些方法添加到 Math类,使一些程序员的生活更轻松。

关于c# - 为什么 C# 的 Math.Min/Max 不是可变参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com