【发布时间】:2023-01-27 23:21:30
【问题描述】:
我想要一个返回两个值中最小值的方法,当一个值为空时它应该返回非空值,当两个都为空时它应该返回空值。
我用下面的方法创建了一个辅助类public static T? Min<T>(T? a, T? b)
我试图通过添加约束 where T : IEquatable<T>, IComparable<T> 来使其非常灵活(也支持字符串等),但是这些不允许我传递 int 参数。
然后我尝试了where T : INumber<T>。这适用于 int 参数,但不适用于 Nullable<int>,因为该类型不满足约束 INumber<Nullable<int>>。
有没有办法做到这一点?
【问题讨论】:
-
public static T? Min<T>(T? a, T? b) where T : struct, INumber<T>?