我如何使用:Interface实现一个类?

时间:2012-01-01 20:05:31

标签: c# interface

如何从扩展到接口的类实现方法?

我有这个界面:

public Interface myInterface
{
      public static int myMethod();
}

这节课:

public class MyClass : myInterface
{
       // And I want here to implement the method form myInterface and i don't know how
}

3 个答案:

答案 0 :(得分:5)

Interface无法编译 - 将其更改为interfacestatic不能成为interface的一部分。

更正后,代码看起来像这样:

public interface myInterface
{
      int myMethod();
}

public class MyClass : myInterface
{
       public int myMethod()
       {
           return 1;
       }
}

关于staticinterface,请参阅http://channel9.msdn.com/forums/TechOff/250972-Static-Inheritance/?CommentID=274217的引用:

  

.NET中的继承仅适用于实例库。静态方法是在类型级别上定义的,而不是在实例级别上定义的。这就是为什么   覆盖不适用于静态方法/属性/事件...

     

静态方法只在内存中保存一次。没有为它们创建的虚拟表等。

     

如果在.NET中调用实例方法,则始终为其提供当前实例。这是.NET运行时隐藏的,但它确实发生了。   每个实例方法都有一个指针(引用)作为第一个参数   运行该方法的对象。静态不会发生这种情况   方法(因为它们是在类型级别定义的)。如何编译   决定选择要调用的方法?

答案 1 :(得分:0)

您错误地声明了您的界面。使用interface关键字指定的C#中的接口,在该确切的大小写中。接口也不能包含静态方法。有关详细信息,请参阅Interfaces (C# Programming Guide) MSDN文章。

答案 2 :(得分:-1)

第二次修改:对我感到羞耻。我在测试之前给出了这个答案,然后意识到我以前从未在接口中声明过静态方法。它不受支持,有一篇涵盖它的SO here

忽视下面的答案......

只需按正常方式实施该方法:

public Interface myInterface
{
   static int myMethod();
}

//impl
public class MyClass : myInterface
{
   public static int myMethod()
   {
      //implementation here
   }
}

编辑:我曾说过这会使方法可以从抽象或具体类的实例中调用,然后意识到我忘记了它是一种抽象的方法......