我们如何在接口中实现静态方法??
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'对此项无效
答案 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)
不,你不能......静态方法/变量引用类本身而不是该类的实例,并且由于接口的目的是由类实现,所以在接口中不能有静态方法...它没有意义