为什么接口不能有构造函数和析构函数?

Kun*_*esh 5 c# constructor destructor interface

我知道界面正在运行.当我开始编写项目编码时,我心中就怀疑了.任何人都可以澄清吗?

Dar*_*rov 21

接口是契约,而不是实现,因此不需要构造或销毁它们.您只构造和销毁可以实现接口的具体类型.


Lon*_*kli 3

据我了解,您想知道为什么我们不能指定构造函数的签名以及其他对象的方法,例如

    interface IApp
    {
         void App(int i, int j);
    }
    class App : IApp
    {
         // You want constructor to be only with 2 parameters
         public void App(int i, int j){ }
    }
Run Code Online (Sandbox Code Playgroud)

这是不可能的,因为首先,所有接口方法都应该实现为 public,但构造函数可以设置为 private,其次,方法void App(..)将仅作为类 App 的构造函数,对于另一个类,它会是另一种方法。

因此,通常,如果您想指定具有已知参数的构造函数,请尝试使用抽象基类。

  • 小一点,但其他方法也可以设置为私有。正如您所说,当它们实现接口时,它们必须是公共的,但构造函数在它们可以拥有的可见性方面实际上没有任何不同。 (3认同)