当前位置: 首页 > 面试题库 >

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

韦德厚
2023-03-14
问题内容

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

Runnable myRunnable = new Runnable()
{
    @Override
    public void run() { /**/ }
}

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

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


问题答案:

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

ThreadStart start = () =>
{
    // Do stuff here
};

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

ThreadStart start = MethodToRunInThread;

或在Thread构造函数中调用:

Thread t = new Thread(MethodToRunInThread);
t.Start();

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



 类似资料:
  • 本文向大家介绍Kotlin 创建接口或者抽象类的匿名对象实例,包括了Kotlin 创建接口或者抽象类的匿名对象实例的使用技巧和注意事项,需要的朋友参考一下 一 ,定义接口和抽象类 二,创建对应的匿名对象 补充知识:android Kotlin 继承、派生、接口、构造方式,方法、属性重写 前言 kotlin 作为google官方android 开发语言,大势所趋,据传到2018底kotlin要全面替

  • 问题内容: 我已经阅读了“ C#匿名实现接口(或抽象类) ”线程以匿名实现接口。但是我想知道使用委托或任何类似方法的.NET 2.0(NO LINQ)是否也可能实现 我从JAVA知道以下可能: (我希望我还记得,是一段时间以前我使用JAVA,但我想它是类似的东西)。每当方法需要接口的实例并且仅被调用一次时,这可能会有所帮助,因此无需为此单一方法创建新的类。 问题答案: .NET 2.0还支持匿名委

  • 本文向大家介绍Kotlin 匿名类实现接口和抽象类的区别详解,包括了Kotlin 匿名类实现接口和抽象类的区别详解的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,还是上代码吧 接口: 抽象类: 看到区别了吗?哈哈,看不到没关系,我告诉你。 他们之间唯一的区别就是调用时的下面这句,抽象类多了一个括号。 object : OnBind object : AbstractOnBind() 就

  • 接口描述了类的行为和功能,而不需要完成类的特定实现。 C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:class Box { public: // 纯虚函数 virtual double getVolume() =

  • 问题内容: 我最近开始使用C#,并且我想找到与此等效的方法。我不知道这叫什么,所以我将简单地通过代码向您展示。 使用Java,我能够创建如下接口: 并像下面这样在方法的参数中传递此接口: 编辑 :我的问题是关于类中的方法的,如果使用C#可以执行这样的操作。 我想知道是否有一种方法可以使用C#(在方法中实例化接口)执行类似的操作,以及这实际上是什么。谢谢! 问题答案: 哇…好吧,请允许我概括一下:

  • 我有两个方法和抽象类的接口,它们实现了这个接口并从它重写了一个方法。我可以实例这个抽象类,而不重写接口的其他方法吗?或者我可以用具有另一个签名的方法替换此方法吗? UPD:谢谢你的回答,我真的在我的问题上犯了错误。我是否可以使用匿名类来扩展我的抽象类,而不重写来自实现的所有方法?我如何理解DragonK的回答,不,我需要创建类,这将是扩展抽象类和重写其他方法?