将 IComparable<T> 传递给 CompareTo 时出错
Error while passing IComparable<T> to CompareTo
我有以下代码:
public class Foo<T>
{
private IComparable<T> a { get; set; }
public int foo(IComparable<T> b)
{
return a.CompareTo(b); // compile error : Argument type 'System.IComparable<T>' is not assignable to parameter type 'T?'
}
}
Argument type 'System.IComparable' is not assignable to parameter type 'T?'
如何避免这个错误?
在 class 级别添加通用约束以确保 T
实现 IComparable<T>
。然后将 属性 和参数类型中的 IComparable<T>
替换为 T
.
public class Foo<T> where T : IComparable<T>
{
private T a { get; set; }
public int foo(T b)
{
return a.CompareTo(b);
}
}
我有以下代码:
public class Foo<T>
{
private IComparable<T> a { get; set; }
public int foo(IComparable<T> b)
{
return a.CompareTo(b); // compile error : Argument type 'System.IComparable<T>' is not assignable to parameter type 'T?'
}
}
Argument type 'System.IComparable' is not assignable to parameter type 'T?'
如何避免这个错误?
在 class 级别添加通用约束以确保 T
实现 IComparable<T>
。然后将 属性 和参数类型中的 IComparable<T>
替换为 T
.
public class Foo<T> where T : IComparable<T>
{
private T a { get; set; }
public int foo(T b)
{
return a.CompareTo(b);
}
}