gpt4 book ai didi

c# - 限制 C# 中的泛型类型

转载 作者:太空狗 更新时间:2023-10-29 17:39:33 25 4
gpt4 key购买 nike

我有一个通用类 MyClass<T>其中 T应该是那些可以比较的类型。

这意味着只有数字类型和类已经定义了关系运算符的方法。我该怎么做?

最佳答案

您不能约束到运算符,但可以约束到接口(interface)。因此,打算使用 >=, <=, ==已经出来了,但你可以使用 CompareTo, Equals .

where T : IComparable<T>

Interface documentation

此界面为您带来CompareTo对关系排序(大于、小于等)有用的方法。基元和字符串已经实现了这一点,但您需要为自己的自定义类型实现这一点。你会像这样使用它

void SomeMethod<T>(T alpha, T beta) where T : IComparable<T>
{
if (alpha.CompareTo(beta) > 0)
{
// alpha is greater than beta, replaces alpha > beta
}
else if (alpha.CompareTo(beta) < 0)
{
// alpha is less than beta, replaces alpha < beta
}
else
{
// CompareTo returns 0, alpha equals beta
}
}

Equals默认情况下,您会在 object 上获得虚拟方法.如果您想要使用引用相等以外的东西,您需要在您自己的自定义类型上重写此方法。 (也强烈建议同时覆盖GetHashCode。)

关于c# - 限制 C# 中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890097/

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