我们如何实现具有相同方法名称的两个接口?

Hem*_*mar 2 c#-4.0

我有一个问题,我们如何实现具有相同方法名的接口

 interface ISample2
{
  string CurrentTime();
     string CurrentTime(string name);
}
 interface ISample1
{
     string CurrentTime();
}
Run Code Online (Sandbox Code Playgroud)

我确实喜欢这个.这是对的吗?

class TwoInterfacesHavingSameMethodName:ISample1,ISample2
{
    static void Main(string[] sai)
    {
        ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
        Console.Write(obj1.CurrentTime());
        ISample2 obj2 = new TwoInterfacesHavingSameMethodName();
        Console.Write(obj2.CurrentTime("SAI"));
        Console.ReadKey();
    }

    #region ISample1 Members

    string ISample1.CurrentTime()
    {
        return "Interface1:" + DateTime.Now.ToString();
    }

    #endregion

    #region ISample2 Members

    string ISample2.CurrentTime()
    {
        return "Interface2:FirstMethod" + DateTime.Now.ToString();
    }

    string ISample2.CurrentTime(string name)
    {
        return "Interface2:SecondMethod" + DateTime.Now.ToString() + "" + name;
    }

    #endregion
}
Run Code Online (Sandbox Code Playgroud)

这一行的含义是什么:

ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
Run Code Online (Sandbox Code Playgroud)

我们是为Class还是Interface创建对象.在Interface中编写方法的基本用法是什么.

Ita*_*aro 5

显式实现接口时,只有从对该接口的引用中调用它时,才会调用显式实现.

所以如果你会写:

  TwoInterfacesHavingSameMethodName obj1 = new TwoInterfacesHavingSameMethodName();
  obj1.CurrentTime();
Run Code Online (Sandbox Code Playgroud)

你会收到一个错误.

ISample1 obj1 = new TwoInterfacesHavingSameMethodName();
ISample2 obj2 = new TwoInterfacesHavingSameMethodName();
obj1.CurrentTime();
obj2.CurrentTime();
Run Code Online (Sandbox Code Playgroud)

将工作.

如果你也想调用这个函数, TwoInterfacesHavingSameMethodName你也必须隐式地实现这个接口.对于前:

public string CurrentTime()
{
   return "Implicit";
}
Run Code Online (Sandbox Code Playgroud)