基础构造函数未被调用

12

我遇到了一个问题,派生类的基本构造函数没有被执行。我已经做了这个操作一百次了,但我无法理解为什么基本构造函数没有被执行。我希望有人能找到我遗漏的简单问题。以下是代码示例。有人知道为什么我的基本构造函数不是首先被调用吗?我有其他以同样方式实现的类,基本构造函数总是被首先调用。

if (item.GetType() == typeof(OtherChargeItem))
{
    OtherChargeItemAddUpdateTest test = new OtherChargeItemAddUpdateTest((OtherChargeItem)item);
    test.StartPosition = FormStartPosition.CenterParent;
    test.ShowDialog();
}

public OtherChargeItemAddUpdateTest()
{
    InitializeComponent();
}

public OtherChargeItemAddUpdateTest(OtherChargeItem item)
        : base()
{
    currentItem = item;
}

3
你能展示这里的继承层次结构吗? - JaredPar
1个回答

31

看起来你想在同一个类中调用默认构造函数,而不是基类中的构造函数,这样当第二个构造函数被调用时,InitializeComponent 将会被调用。尝试使用 this() 代替 base()


3
是的,良好的推理能力。他可能认为默认构造函数被称为“基础构造函数”。 - Mark Byers
5
谢谢,我正准备表达一下自己现在有多蠢。当JaredPar要求继承层次结构时,我意识到了问题描述的缺陷以及我过去30分钟一直在尝试做的事情。感谢您的帮助,很抱歉浪费了大家时间,问了一个对我来说今天早上看起来并不那么简单的琐碎问题。 - Grasshopper
这种情况下应该遵循什么协议?我应该修改问题以更好地反映我的问题吗? - Grasshopper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接