如何将此“java 通配符”转换为 C# 格式?
public abstract class AAA<T extends BBB<?>> extends CCC<T>{}
我不正确的 C# 代码
public abstract class AAA<T> : CCC<T> where T : BBB<?>{}
如何转换 BBB<?>
最佳答案
有个类似的问题C# generic "where constraint" with "any generic type" definition?不特定于 Java 通配符。那里提供的答案可能会对您有所帮助。
根据该答案,可能的类签名是:
public abstract class AAA<T, TOther> : CCC<T>
where T : BBB<TOther>
{}
C# 中的泛型必须具有命名类型参数,即使您从未打算显式/隐式使用该类型。并且所有类型参数都必须在方法/类/接口(interface)的标识符声明中命名。
请注意,如果需要,可以将 TOther 限制为仅对象类型:
public abstract class AAA<T, TOther> : CCC<T>
where T : BBB<TOther>
where TOther : object
{}
关于java - "java wildcard"到 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30179764/