如何检查泛型类型是否为 IComparable,如果是则进行比较?
How to Check if a Generic Type is IComparable then Compare if so?
我正在尝试弄清楚如何执行类似下面的伪代码的操作:
private void test<T>(T a, T b)
{
if (a is IComparable<T> && b is IComparable<T>)
{
int result = a.CompareTo(b);
// do something with the result
}
else
{
// do something else
}
}
如何在 C# 中实现?
您可以使用is
type pattern将结果赋给一个变量并用它来调用Compare
。您也不需要将 b
转换为 IComparable<T>
,因为 CompareTo
接受 T
类型的参数(并且 b
已经是 T
)
if (a is IComparable<T> comparable)
{
int result = comparable.CompareTo(b);
// do something with the result
}
另一种选择是使用 IComparable<T>
接口应用通用约束
private void test<T>(T a, T b) where T : IComparable<T>
{
var result = a.CompareTo(b);
// do something with the result
}
我正在尝试弄清楚如何执行类似下面的伪代码的操作:
private void test<T>(T a, T b)
{
if (a is IComparable<T> && b is IComparable<T>)
{
int result = a.CompareTo(b);
// do something with the result
}
else
{
// do something else
}
}
如何在 C# 中实现?
您可以使用is
type pattern将结果赋给一个变量并用它来调用Compare
。您也不需要将 b
转换为 IComparable<T>
,因为 CompareTo
接受 T
类型的参数(并且 b
已经是 T
)
if (a is IComparable<T> comparable)
{
int result = comparable.CompareTo(b);
// do something with the result
}
另一种选择是使用 IComparable<T>
接口应用通用约束
private void test<T>(T a, T b) where T : IComparable<T>
{
var result = a.CompareTo(b);
// do something with the result
}