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