C# 为什么会出现CS0695?
从 “泛型类型”不能同时实现“泛型接口”和“泛型接口” 接口,因为它们可能会为某些类型参数统一 替换 当泛型类实现多个 相同泛型接口的参数化,并且存在 类型参数替换将使两个接口 完全相同的要避免此错误,请仅实现其中一个接口, 或者更改类型参数以避免冲突 不能将C# 为什么会出现CS0695?,c#,generics,compiler-errors,C#,Generics,Compiler Errors,从 “泛型类型”不能同时实现“泛型接口”和“泛型接口” 接口,因为它们可能会为某些类型参数统一 替换 当泛型类实现多个 相同泛型接口的参数化,并且存在 类型参数替换将使两个接口 完全相同的要避免此错误,请仅实现其中一个接口, 或者更改类型参数以避免冲突 不能将PipelineElementBase和PipelineElement接口同时实现到抽象类 正如错误页面所说,您应该 仅实施其中一项或 更改类型参数以避免冲突 从 13.4.2实施接口的唯一性 由泛型类型声明实现的接口必须保留 对于所有
PipelineElementBase
和PipelineElement
接口同时实现到抽象类
正如错误页面所说,您应该
- 仅实施其中一项或
- 更改类型参数以避免冲突
Derived
同时实现了I
和I
。代码
interface I<T>
{
void F();
}
class Base<U>: I<U>
{
void I<U>.F() {…}
}
class Derived<U,V>: Base<U>, I<V> // Ok
{
void I<V>.F() {…}
}
ix=new-Derived();
x、 F();
调用派生的
中的方法,因为派生的
有效
重新实施I
(§13.4.6)
[SO编辑强调。]哪种冲突?有了这些类型约束,
和
就不会发生冲突。@main--“在确定所有可能的构造类型时,不考虑约束声明。”这是问题的关键,但这个答案太过详细地隐藏了这句重要的话。我删除了我的注释,没有得到任何有用的东西。标记为favorite,我也想知道答案:)+但问题是1!
public interface MyInterface<A> { }
public class MyClass: MyInterface<string>, MyInterface<int> { }
interface I<T>
{
void F();
}
class X<U,V>: I<U>, I<V>
{
void I<U>.F() {...}
void I<V>.F() {...}
}
I<int> x = new X<int,int>();
x.F();
interface I<T>
{
void F();
}
class Base<U>: I<U>
{
void I<U>.F() {…}
}
class Derived<U,V>: Base<U>, I<V> // Ok
{
void I<V>.F() {…}
}
I<int> x = new Derived<int,int>();
x.F();