![](/img/trans.png)
[英]How do I define a generic class that implements an interface and constrains the type parameter?
[英]Generic method that further constrains the class type parameter
我有一个带有BisectLeft
方法的数据结构
public class MyStruct<T> where T: IComparable<T>
{
public T BisectLeft(T item) {...}
}
我想为泛型类型U
添加BisectLeft
的重载,其中T: IComparable<U>
public T BisectLeft(T item) {...}
public T BisectLeft<U>(U item) where T: IComparable<U> {...}
这不会编译,因为它无法解析类型T
。 我也不能将T
添加为BisectLeft<T, U>
因为T
将被视为 class MyStruct<T>
的类型参数的副本。
有没有办法在不添加U
作为 class 的类型参数的情况下实现这一点?
您应该在父类型或方法中指定类型参数,例如where T
。 如果您在两个地方都定义它,它将不起作用。
在您的情况下,您应该只在方法上执行此操作,例如:
public class MyStruct
{
public T BisectLeft<T>(T item)
where T : IComparable<T>
{
return ...;
}
public T BisectLeft<T, U>(U item)
where T : IComparable<U>
{
return ...;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.