基础构造函数未执行

时间:2016-08-25 20:13:44

标签: c#

我有一个应该在构造函数中实例化的私有类型。我有基础构造函数和另一个带参数。我在基础中保持实例化,只在参数化构造函数中进行变量赋值。但它没有用。

这不起作用。

public class MainClass
{
    private MyType myType = null;
    private string myParm = string.Empty;

    private MainClass()
    {
        myType = new MyType();
    }

    public MainClass(string inParm) : base()
    {
        myParm = inParm;
    }
}

以下是有效的,

public class MainClass
{
    private MyType myType = null;
    private string myParm = string.Empty;

    private MainClass()
    {
    }

    public MainClass(string inParm): base()
    {
        myType = new MyType();
        myParm = inParm;
    }
}
保存在基础构造函数

中时,

myType未初始化

2 个答案:

答案 0 :(得分:7)

您希望this()不是base()。您想要在同一个类上调用构造函数,而不是它的基类:

public MainClass(string inParm) : this()
{
   myParm = inParm;
}

默认情况下,类会调用其基类的默认构造函数,因为它是构造自身的必要条件。如果基类上没有默认构造函数,则必须提供正确的参数以满足基类的构造。

但你的基类是Object,所以不必担心它。

答案 1 :(得分:3)

您必须致电this()而不是base(),因为您没有调用父构造函数:

public class MainClass
{
    private MyType myType = null;
    private string myParm = string.Empty;

    private MainClass()
    {
        myType = new MyType();
    }

    public MainClass(string inParm)
        : this()
    {
        myParm = inParm;
    }
}