有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java C#模板参数作为模板接口

我正试图将这段代码从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类型

多谢各位


共 (2) 个答案

  1. # 1 楼答案

    class MyClass<T> where T: IMyInterface<T>
    

    看起来不错

    如果你有

     class MySecondClass : IMyInterface<MySecondClass>
     {
    
     }
    

    然后你可以使用

     MyClass<MySecondClass> obj = new MyClass<MySecondClass>();
    
  2. # 2 楼答案

    不,Java的C#等价物只是:

    public class MyClass<T> where T : IMyInterface<T>
    

    Java中有一个类型参数,C#中有一个类型参数

    如何使用该类将取决于IMyInterface<T>是什么以及它的实现方式。例如,如果它是IEquatable<T>,您可以创建一个MyClass<int>,因为int实现了IEquatable<int>