ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

C# 接口(实现多个接口)

2026/10/3 15:40:44 拓冰建站 浏览量
C# 接口(实现多个接口)

实现多个接口

到现在为止,类只实现了单个接口。

  • 类或结构可以实现任意数量的接口。
  • 所有实现的接口必须列在基类列表中并以逗号分隔(如果有基类名称,则在其之后)。
    例如,如下的代码演示了MyData类,它实现了两个接口:TDataStore和1DataRetrieveo图16-5
    演示了MyData类中多个接口的实现。
interface IDataRetrieve{int GetData();} //声明接口
interface IDataStrore  {void SetData(int x);} //声明接口class MyData:IDataRetrieve,IDataStrore    //声明类 接口
{int Mem1;public int GetData()  {return Mem1;}public void SetData(int x){Mem1=x;}
}class Program
{static void Main(){MyData data=new MyData();data.SetData(5);Console.WriteLine($"Value={data.GetData()}");}
}

类实现了多个接口

实现具有重复成员的接口

由于类可以实现任意数量的接口,有可能两个或多个接口成员具有相同的签名和返回类型。
编译器如何处理这样的情况呢?
例如,假设有两个接口IIfc1和IIfc2,如下所示。每一个接口都有一个名为Print0ut的方
法,它们具有相同的签名和返回类型。如果我们要创建实现这两个接口的类,怎么处理重复接口
的方法呢?

interface IIfc1
{void PrintOut(string s);
}interface IIfc2
{void PrintOut(string t);
}

答案是:如果一个类实现了多个接口,并且其中一些接口成员具有相同的签名和返回类型,
那么类可以实现单个成员来满足所有包含重复成员的接口。

例如,如下代码演示了MyClass类的声明,它实现了IIfc1和IIfc20方法Print0ut的实现
满足了两个接口的需求。

class MyClass:IIfc1,IIfc2    //实现两个接口
{public void PrintOut(string s)  //两个接口的单一实现{Console.WriteLine($"Calling through:{s}");}
}class Program
{static void Main(){MyClass mc=new MyClass();mc.PrintOut("object");}
}

图16-6演示了利用单个类级别的方法的实现来实现重复接口的方法。