0

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

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'对此项无效

4

3 回答 3

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 文档注释- 这将使它们更有用。我在成员之间添加了一些空格以使代码更易于阅读。您还应该考虑使接口通用。)

你为什么一开始就试图让成员保持静态?你希望达到什么目标?

于 2013-04-19T10:13:17.303 回答
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);
    }

查看为什么 C# 不允许静态方法实现接口?

Eric Lippert还写了一篇很酷的文章系列,名为

于 2013-04-19T10:14:02.477 回答
1

不,您不能...静态方法/变量指的是类本身而不是该类的实例,并且由于接口的目的是由类实现,因此您不能在接口中使用静态方法...它没有没道理

于 2013-04-19T10:14:59.233 回答