接口如何模拟多重继承? - c#

在寻找在C#中使用接口的原因时,我偶然发现MSDN在其中说:

通过使用接口,您可以例如包含以下行为:
一个类中有多个来源。该功能在C#中很重要
因为该语言不支持类的多重继承。
此外,如果要模拟,则必须使用接口
结构的继承,因为它们实际上不能从结构继承
另一个结构或类。

但是,Interface如何模拟多重继承。
如果我们继承多个接口,仍然需要实现接口中引用的方法。

任何代码示例将不胜感激!

c#大神给出的解决方案

这使用委派工作。您可以使用其他类来构成一个类,并将方法调用转发(“委托”)到它们的实例:

public interface IFoo
{
    void Foo();
}

public interface IBar
{
    void Bar();
}

public class FooService : IFoo
{
    public void Foo()
    {
        Console.WriteLine("Foo");
    }
}

public class BarService : IBar
{
    public void Bar()
    {
        Console.WriteLine("Bar");
    }
}

public class FooBar : IFoo, IBar
{
    private readonly FooService fooService = new FooService();
    private readonly BarService barService = new BarService();

    public void Foo()
    {
        this.fooService.Foo();
    }

    public void Bar()
    {
        this.barService.Bar();
    }
}

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解黑白圆盘

一个圆盘被涂上了黑白二色,两种颜色各占一个半圆。圆盘以一个未知的速度、按一个未知的方向旋转。你有一种特殊的相机可以让你即时观察到圆上的一个点的颜色。你需要多少个相机才能确定圆盘旋转的方向?题解:可以用一个相机即可

LeetCode题解圆上任取三点构成锐角三角形的概率

来自字节跳动的一道几何题题解:1/4

LeetCode题解深度优先遍历和回溯的关系?

深度优先遍历的范围更大还是回溯的范围更大?为什么?题解:我的理解是:dfs是回溯思想的一种体现- 回溯:是在整个搜索空间中搜索出可行解,在搜索过程中不断剪枝回退,这是回溯的思想,这个搜索空间并没有限制于特定的数据结构。- dfs:dfs是指特定的数据结构中如图,树(特殊的图)中搜索答案,范围限制在了特定的数据结构。个人拙见。