我有一些麻烦,为我的课界面。我尝试了一个简单的公共无效,并工作。但我无法让它与下面的代码中的公共静态空白一起工作。我认为这与枚举方法中的参数有关。但我如何解决这个问题?从接口类
这是类:
这是我的接口:
我有一些麻烦,为我的课界面。我尝试了一个简单的公共无效,并工作。但我无法让它与下面的代码中的公共静态空白一起工作。我认为这与枚举方法中的参数有关。但我如何解决这个问题?从接口类
这是类:
这是我的接口:
接口是合同。他们为合同中的所有方法指定方法签名。
在你的界面,您可以:
void FFT(/*stuff*/)
然而,在您的实现,您已经定义
static void FFT(/*stuff*/)
现在,为什么我们不能用静态的?从Joel Spoelsky
由于接口是一个“合同”或消费者(主叫方)之间的协议和提供者(被叫)。一个接口描述了calle将提供什么功能和如何提供功能。没有必要由第三方提供静态成员。静态成员不能被提供者覆盖,因此它们不属于接口。
http://discuss.joelonsoftware.com/default.asp?dotnet.12.305680.12 –
@viveknuna这不是我所链接的吗? – Dudemanword
接口是调用者和被调用者之间的契约。静态成员属于类而不是对象,所以它的静态方法没有意义。
为了解释为什么这样做没什么意义,创建接口的原因是您可以传递类的对象作为接口类型的引用,所以消费者不需要知道哪个底层键入对象。例如,您可以将IEnumerable<Foo>
传递给一个不需要知道或关心这个数组或列表或哈希集等的方法,它只需要一个Foos序列。
静态方法不与一个实例关联,因此没有可引用的对象。在C#中没有可以用来引用类而不是对象的静态接口的概念。
如果您有其他想要交换使用的类,可以摆脱静态并创建这些单例。
请始终在您的问题中使用文字,而不是图片。 –
接口的实现方法不能是静态的。这是一条规则。 – Jonesopolis
如果我不能使用接口,我该如何使用这些方法? – Skupaj