C# 有没有一种方法可以从几个类中使用具有相同名称的继承方法?
有没有一种方法可以使用来自少数几个类的同名继承方法,但不强制转换C# 有没有一种方法可以从几个类中使用具有相同名称的继承方法?,c#,inheritance,C#,Inheritance,有没有一种方法可以使用来自少数几个类的同名继承方法,但不强制转换 public class A { someMethod(A a) {} } public class B { someMethod(B b) {} } public class Client : A, B { public Client() { someMethod(new A()); someMethod(new B()); } } 有一些非语言工
public class A {
someMethod(A a) {}
}
public class B {
someMethod(B b) {}
}
public class Client : A, B {
public Client() {
someMethod(new A());
someMethod(new B());
}
}
有一些非语言工具可用于这类事情。查看。有一些非语言工具可用于此类工作。查看。您可以通过显式接口实现和组合来实现这一点:
public interface IA {
someMethod(A a) {}
}
public interface IB {
someMethod(A a) {}
}
public class A : IA {
someMethod(B b) {}
}
public class B : IB {
someMethod(B b) {}
}
public class Client : IA, IB {
public Client() {
((IA)this).someMethod(new A());
((IB)this).someMethod(new B());
}
IA.someMethod(new A());
IB.someMethod(new B());
}
您可以通过显式接口实现和组合来实现这一点:
public interface IA {
someMethod(A a) {}
}
public interface IB {
someMethod(A a) {}
}
public class A : IA {
someMethod(B b) {}
}
public class B : IB {
someMethod(B b) {}
}
public class Client : IA, IB {
public Client() {
((IA)this).someMethod(new A());
((IB)this).someMethod(new B());
}
IA.someMethod(new A());
IB.someMethod(new B());
}
不,按照你描述的那样做被称为多重继承。在不继承方法子集的情况下执行相同的操作称为mixin。抱歉,这两个都不是c#的特性。不。按照您的描述这样做被称为多重继承。在不继承方法子集的情况下执行相同的操作称为mixin。这两个都不是c#的特性,抱歉。c#不支持多类继承;您的代码无法编译。C#不支持多类继承;你的代码无法编译。