C#匿名实现接口(或抽象类)

在Java中,可以扩展带有匿名类的接口,该类可以动态实现。例:

Runnable myRunnable = new Runnable()

{

@Override

public void run() { /**/ }

}

(更多信息:http : //www.techartifact.com/blogs/2009/08/anonymous-classes-in-java.html#ixzz1k07mVIeO)

这在C#中可能吗?如果不是,那么有什么可行的替代方法而不必依赖于实现过多的子类?

回答:

不,您不能在C#中做到这一点-但通常,替代设计方法是使用委托。在您提供的示例中,Runnable通常使用表示ThreadStart,并且您可以使用匿名方法或lambda表达式:

ThreadStart start = () =>

{

// Do stuff here

};

或者,如果您只运行带有正确签名的方法,则可以使用方法组转换:

ThreadStart start = MethodToRunInThread;

或在Thread构造函数中调用:

Thread t = new Thread(MethodToRunInThread);

t.Start();

如果确实需要实现一个接口,则必须真正实现它(可能在私有嵌套类中)。但是,根据我的经验,在C#中这种情况并不十分常见-通常C#接口是那种自然会要求“真正”实现的类型,即使在Java中也是如此。

以上是 C#匿名实现接口(或抽象类) 的全部内容, 来源链接: utcz.com/qa/434691.html

回到顶部