using System;
using System.Collections;interface IBankProcess
{
    void Process();
}interface IClient
{
    IBankProcess CreateProcess();
}class TransferProcess : IBankProcess
{
    public void Process()
    { 
    
    }
}class TransferClient : IClient
{
    IBankProcess IClient.CreateProcess()
    {
        return new TransferProcess();
    }
}class EasyBankStaff
{
    private IBankProcess bankProc = null;    public void HandleProcess(IClient client)
    {
        bankProc = client.CreateProcess();
        bankProc.Process();
    }
}class BankProcess
{
    public static void Main()
    {
        EasyBankStaff bankStaff = new EasyBankStaff();
        bankStaff.HandleProcess(new TransferClient());
    }
}
这段代码是关于银行业务的一个设计雏形。
问题:TransferClient类中,对IClient接口中的CreateProcess()函数的实现,在定义时为什么是IBankProcess IClient.CreateProcess()的形式,
而不是IBankProcess CreateProcess()的形式?这样写的原因是什么?

解决方案 »

  1.   

    这是一种显式接口实现!接口的实现有隐式实现和显式实现。如果类或者结构要实现的是单个接口,可以使用隐式实现,如果类或者结构继承了多个接口那么接口中相同名称成员就要显式实现。显示实现是通过使用接口的完全限定名来实现接口成员的。使用显式接口成员执行体一般有两个目的:1、因为显式接口成员执行体不能通过类的实例进行访问,这就可以从公有接口中把接口的实现部分单独分离开。如果一个类只在内部使用该接口,而类的使用者不会直接使用到该接口,这种显式接口成员执行体就可以起到作用。2、显式接口成员执行体避免了接口成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式接口成员执行体。如果没有显式接口成员执行体,那么对于名称和返回类型不同的接口成员,类也无法进行实现。
      

  2.   

    本例中两个写法都可以。
    只有当你实现多个接口的时候,出现了重名,这么写才是必须