C# 派生类中的基类字段初始化

C# 派生类中的基类字段初始化,c#,inheritance,C#,Inheritance,1) 如果我在基类中定义一个字段,比如 myType myField = new MyField(); 该字段是否总是在派生类中初始化 2) 如果我通过基类默认(无参数)构造函数初始化这个字段,它会在派生类中初始化吗 假设我没有从派生类型调用任何:base()构造函数 我的观点是仅在基类中用默认值实例化字段,并在派生类中提供重写初始化。是的,字段将始终初始化。如果不显式链接到任何其他构造函数,则将隐式链接到base()。在点击Object之前,您总是会直接链接类型层次结构 我的观点是仅在基类中

1) 如果我在基类中定义一个字段,比如

myType myField = new MyField();
该字段是否总是在派生类中初始化

2) 如果我通过基类默认(无参数)构造函数初始化这个字段,它会在派生类中初始化吗

假设我没有从派生类型调用任何
:base()
构造函数


我的观点是仅在基类中用默认值实例化字段,并在派生类中提供重写初始化。

是的,字段将始终初始化。如果不显式链接到任何其他构造函数,则将隐式链接到
base()
。在点击
Object
之前,您总是会直接链接类型层次结构

我的观点是仅在基类中使用默认值实例化属性,并在派生类中提供重写初始化

然后我建议在基类中,有两个构造函数,其中一个可能受保护:

public class BaseClass
{
    private MyType myField;

    protected BaseClass(MyType myField)
    {
        this.myField = myField;
    }

    public BaseClass() : this(new MyType())
    {
    }
}

然后派生类型中的构造函数可以链接到任意一个构造函数,视情况而定。。。你不需要在不需要的时候创建
MyType
的实例。

是的,我已经解决了这个问题