【问题标题】:How to inherit constructors with arguments in .NET?如何在 .NET 中继承带有参数的构造函数?
【发布时间】:2010-03-31 05:42:12
【问题描述】:

我有一个“MustInherit”.NET 类,它声明了一个带有整数参数的构造函数。但是,当我创建任何派生类时,Visual Studio 会给我一个错误,指出没有可以在没有任何参数的情况下调用的构造函数。是否可以带参数继承构造函数?

现在,我必须使用

Public Sub New(ByVal A As Integer)
    MyBase.New(A)
End Sub

在派生类中。有什么办法可以避免吗?

【问题讨论】:

    标签: .net inheritance constructor


    【解决方案1】:

    不,这是不可能的。每个在基类中有参数的构造函数都必须在派生类中重新声明。

    【讨论】:

    【解决方案2】:

    是的,这是可能的。但是您必须使用整数调用基本构造函数。

    public class A
    {
        public A(int x)
        {
        }
    }
    
    public class B : A
    {
        public B()
            : base(42)
        {
        }
    }
    

    Public Class B
        Inherits A
    
        Public Sub New()
            MyBase.New(42)
        End Sub
    End Class
    

    【讨论】:

    • 这不是构造函数的继承 - B 类没有接受整数的构造函数。
    • @"MA Hanin" - 我认为问题不在于继承构造函数,而是继承没有无参数构造函数的类,从而导致派生类具有无参数构造函数。否则这个问题真的没有意义。
    • 其实问题关于继承构造函数的。由于正在初始化的变量都是由基类声明的,所以我希望使用基类构造函数。也就是说,构造函数不会被任何派生类更改。但显然这似乎是不可能的。
    • @Soumya91 - 我想澄清这里发生了什么。你不能继承构造函数——你只能继承类。您可以通过调用基本构造函数来链接构造函数。我们链接构造函数,而不是继承它们。那么,您是否希望派生构造函数也具有整数参数?我读了你的问题,因为你没有,我的解决方案涵盖了这一点。如果我错了,请告诉我你的意思。如果我是对的,请投票。 :-)
    猜你喜欢
    • 2018-03-31
    • 2014-02-03
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2015-08-22
    • 2016-05-22
    • 2011-11-23
    • 2010-09-18
    相关资源
    最近更新 更多