gpt4 book ai didi

c# - 使用特定于类型的值初始化 C# 泛型

转载 作者:行者123 更新时间:2023-11-30 14:04:35 25 4
gpt4 key购买 nike

在下面的类中:

public class Example<T> where T : IComparable {
private T _min;
private T _max;

public Example() {
// _min = T.MinValue;
// _max = T.MaxValue;
}

public Example(T min, T max) {
_min = min;
_max = max;
}

public bool Contains(T val) {
return (val.CompareTo(_min) < 0) && (val.CompareTo(_max) > 0);
}
}

在默认构造函数中将成员初始化为其类型特定的最小值和最大值的最佳方法是什么?我知道这对泛型的允许类型施加了另一个限制,但这对我的目的来说没问题。

此外,如果类型支持无限值,例如 float 或 double,是否有办法检测到这一点并相应地设置值?

最佳答案

没有约束可以让您获得 MinValue 和 MaxValue。您可以通过强类型方式获得的唯一值是默认值 (default(T))。

如果您知道类型将具有静态 MinValue 和 MaxValue 属性,则可以使用反射获取这些属性,但无法在编译时强制执行此操作的安全性。

另一种解决方案是稍微重新设计您的类:添加 _isMinSpecified 和 _isMaxSpecified bool 成员,并在您的 Contains 方法中查阅它们——例如如果既没有指定最小值也没有指定最大值,您将始终返回 true。

关于c# - 使用特定于类型的值初始化 C# 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1634766/

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