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#不支持多类继承;你的代码无法编译。