如何从接口实现公共方法?

| 我有以下界面
interface ITest
{
  void TestVoid();
}

class A : ITest
{
   public void ITest.TestVoid() //will not work
   {
     Conole.WriteLine(\"Done\");
   }

   public void TestVoid() //without name of interface, it works
   {
     Conole.WriteLine(\"Done\");
   }
}
第二个问题:接口仅包含成员签名,但不包含实现,是否正确?     
已邀请:
第一种方法是显式实现。这使您可以实现接口,而无需在类外显示此方法。此外,您不能在显式实现上具有可见性修改器。 第二种方法是普通的(隐式)实现,您可以在其中实现接口并创建公共方法。 更多:隐式和显式接口实现,C#:接口-隐式和显式实现 对于第二个问题:这实际上是什么接口。它仅告诉您对象上可用的方法,属性或事件。不是如何实现它们。     
我回答了您的第二个问题:是的,这是正确的。 接口声明了一种合同,如果您实现该接口,则必须使用该合同。 如果实现这些接口,则一个接口仅(且仅)声明您必须在类中编写的内容。     
第一个称为显式实现,它将像这样工作:
interface ITest
{
  void TestVoid();
}
class A : ITest
{
   public static void Main()
   {
       A a1 = new A();
       ITest a2 = new A();
       a1.TestVoid(); // won\'t work
       a2.TestVoid(); // will work
   }
   public void ITest.TestVoid()
   {
     Conole.WriteLine(\"Done\");
   }
}
接口永远不能包含实现,只能包含签名。     
好的,第二个可以使用。     
您需要实现类似的接口。
class A : ITest {
}.   
您可以使用ITest显式实现ITests方法。字首 或隐式作为公共方法 如果它们是明确的,则访问它们的方式就是这样。
ITest a = new A();
除此以外。     A a = new A(); 接口永远没有实现, 除非将其标记为抽象,否则类方法始终会执行-派生类具有实现方法     
第一个称为Explicit实现,不应具有任何访问说明符,Explicit接口也可以用于隐藏类开发人员认为私有的接口的详细信息。 第二个是隐式实现。它必须具有public作为访问说明符。 该链接对于理解它确实很有帮助。 http://blogs.msdn.com/b/mhop/archive/2006/12/12/implicit-and-explicit-interface-implementations.aspx     

要回复问题请先登录注册