修饰符'static'对此项无效/ c#中的静态接口错误

时间:2013-04-19 10:12:36

标签: c#

我们如何在接口中实现静态方法??

public interface ICache
{
  //Get item from cache
  static object Get(string pName);

  //Check an item exist in cache
  static bool Contains(string pName); 

  //Add an item to cache
  static void Add(string pName, object pValue);

  //Remove an item from cache
  static void Remove(string pName);
}

以上界面抛出错误:修饰符'static'对此项无效

3 个答案:

答案 0 :(得分:4)

这是绝对正确的。您不能在接口中指定静态成员。它必须是:

public interface ICache
{
  //Get item from cache
  object Get(string pName);

  //Check an item exist in cache
  bool Contains(string pName);

  //Add an item to cache
  void Add(string pName, object pValue);

  //Remove an item from cache
  void Remove(string pName);
}

(顺便说一句,你的评论应该是XML documentation comments - 这将使它们更有用。我在成员之间添加了一些空格,使代码更容易阅读。你还应该考虑使接口通用。)

为什么尝试首先使成员成为静态?你希望实现什么目标?

答案 1 :(得分:4)

你不能这样做。它应该是

   public interface ICache
    {
      //Get item from cache
      object Get(string pName);
      //Check an item exist in cache
      bool Contains(string pName);
      //Add an item to cache
      void Add(string pName, object pValue);
      //Remove an item from cache
      void Remove(string pName);
    }

查看Why Doesn't C# Allow Static Methods to Implement an Interface?

此外, Eric Lippert 撰写了一篇名为

的精彩文章系列

答案 2 :(得分:1)

不,你不能......静态方法/变量引用类本身而不是该类的实例,并且由于接口的目的是由类实现,所以在接口中不能有静态方法...它没有意义