Welcome

首页 / 软件开发 / C# / C#3.0中的“多重继承”

C#3.0中的“多重继承”2010-12-19在路上的牛C#的对象系统是个单根系统,不支持类的多继承,只支持多接口实现,这在 某种程度带来了一些不便:我们在系统设计时经常会抽象出一些接口,并为接口 提供一个抽象类作为默认的实现,然后实际使用的类可以从抽象类派生。如果一 个类实现了多接口,那我们只能选择一个抽象类作为祖先类,再将其他接口的实 现手工加到类中。

这种情况在C#3.0中有了变化,我们现在可以利用C#3.0的扩展方法来实现一 个“受限的多继承”。

C#3.0中引入了扩展方法,可以利用一个静态类的静态方法为一个类或者接口 添加方法,关键是添加的方法是包含实现的,由此我们可以在C#3.0中为接口提 供一个带实现的方法声明,而无需额外的实现类!如果一个类实现了多个这样的 接口,就可以达到类似多继承的效果。

让我们用代码测试一下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test35
{
public interface ITestA{ }
public static class ITestAHelper
{
public static void TestA(this ITestA obj)
{
Console.WriteLine("ITestAHelper.TestA");
}
}
public interface ITestB{ }
public static class ITestBHelper
{
public static void TestB(this ITestB obj)
{
Console.WriteLine("ITestBHelper.TestB");
}
}
public class Test : ITestA, ITestB
{
}
class Program
{
static void Main(string[] args)
{
Test obj1 = new Test();
obj1.TestA();
obj1.TestB();
Console.ReadKey();
}
}
}

执行的结果:

ITestAHelper.TestA
ITestBHelper.TestB