我正在尝试将这段代码从Java转换为C#,但我无法找到正确的synthax
爪哇:
public class MyClass<T extends IMyInterface<T>>
我尝试翻译成C#:
public class MyClass<T, U> where T: IMyInterface<U>
如果我public class MyClass<T> where T: IMyInterface<T>
,那么类声明中没有编译错误,但我无法弄清楚如何使用该类。
更具体地说,我有一个接口IPoint<T>
,它由类EuclideanPoint:IPoint<EuclideanPoint>
实现。另外,我有一个模板化的类Clusterer<U>
,它不应该关心接口的模板参数,它应该只确保U是IPoint类型。
谢谢。
答案 0 :(得分:3)
不,Java的C#等价物只是:
public class MyClass<T> where T : IMyInterface<T>
Java中的一个类型参数,一个在C#中。
您如何使用该类将取决于IMyInterface<T>
是什么以及实现它的原因。例如,如果是IEquatable<T>
,则可以创建MyClass<int>
,因为int
实现了IEquatable<int>
。
答案 1 :(得分:2)
class MyClass<T> where T: IMyInterface<T>
看起来不错。
如果你有
class MySecondClass : IMyInterface<MySecondClass>
{
}
然后你可以使用
MyClass<MySecondClass> obj = new MyClass<MySecondClass>();