【发布时间】:2011-04-26 19:47:50
【问题描述】:
interface IXXX
{
void Foo();
}
class XXX : IXXX
{
public static void Foo()
{
Console.WriteLine("From XXX");
}
}
class Program
{
static void Main(string[] args)
{
XXX.Foo();
}
}
编译器错误:XXX.Foo() 无法实现接口成员,因为它是静态的。
为什么静态方法不能实现接口方法?
【问题讨论】:
-
这没有意义。你将如何在 XXX 的派生类中实现接口?但是,您没有理由不能从实现中调用静态成员。
-
@leppie,你可以有一个“类型方法”;其中没有隐式的
this,但它确实在运行时从类型解析了方法。不过,可以通过实例方法或反射来满足使用它们的罕见场合,因此不是迫切需要 IMO。 -
@Jon Hanna:可以,但是编译器会抱怨无法解析正确的方法。
-
@leppie。使用反射技术它不能,使用实例方法它可以。需求压力是否足以要求更改语言?我会说没有 IMO,尽管我自己有时也想要它。
标签: c#