C# 基本构造函数未执行

C# 基本构造函数未执行,c#,C#,我有一个私有类型,应该在构造函数中实例化。我有基本构造函数和另一个带参数的构造函数。我在基中保持实例化,在参数化构造函数中只保留变量赋值。但它不起作用 public class MainClass { private MyType myType = null; private string myParm = string.Empty; private MainClass() { myType = new MyType(); }

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

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()
    {
        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保存在基本构造函数中时未初始化

您希望它不是基本构造函数。要在同一个类而不是基类上调用构造函数:

public MainClass(string inParm) : this()
{
   myParm = inParm;
}
默认情况下,类将调用其基类的默认构造函数,因为它需要构造自身。如果基类上没有默认构造函数,则必须提供正确的参数以满足基类的构造

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

您必须调用它而不是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;
    }
}

base用于调用父类的构造函数,父类是该类的对象。对象对myType一无所知。你可能在找这个,我现在明白了。谢谢你的解释