interface IXXX
{
void Foo();
}
class XXX : IXXX
{
public static void Foo()
{
Console.WriteLine("From XXX");
}
}
class Program
{
static void Main(string[] args)
{
XXX.Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
编译器错误:XXX.Foo()无法实现接口成员,因为它是静态的.
为什么静态方法不能实现接口方法?
Øyv*_*hen 11
请参阅JoelOnSoftware的这个主题,描述其背后的原因.
基本上,接口是使用者和提供者之间的契约,静态方法属于该类,而不是类的每个实例.
关于SO的早期问题也涉及完全相同的问题: 为什么C#不允许静态方法实现接口?
接口定义了对象必须响应的行为。由于 Foo 是一个静态方法,对象不会响应它。换句话说,你不能写......
XXX myXXX = new XXX();
myXXX.Foo();
Run Code Online (Sandbox Code Playgroud)
换句话说,myXXX 并不能完全满足接口的要求。
| 归档时间: |
|
| 查看次数: |
11913 次 |
| 最近记录: |