The modifier 'static' is not valid for this item / Static interface error in c#
本问题已经有最佳答案,请猛点这里访问。
我们如何在接口中实现静态方法…?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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"对此项无效
你做不到。应该是
1 2 3 4 5 6 7 8 9 10 11 | 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); } |
看看为什么不允许静态方法实现接口?
埃里克·利珀特还写了一个很酷的系列文章,叫做
- 对类型参数调用静态方法是非法的,
part one 、part two 。
这是绝对正确的。不能在接口中指定静态成员。必须这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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文档注释——这会使它们更有用。我在成员之间添加了一些空白以使代码更容易阅读。您还应该考虑使接口成为通用的。)
你为什么一开始就试图让成员保持静止?你希望达到什么目标?
不,你不能…静态方法/变量引用的是类本身,而不是该类的实例,并且由于接口的目的是由类实现,因此在接口中不能有静态方法…这没道理