基本的C#问题在这里.
在声明它时或在相关对象的构造函数中创建类属性/字段的实例有什么区别.例如:
public class MyClass
{
public MyObject = new MyObject();
}
Run Code Online (Sandbox Code Playgroud)
VS
public class MyClass
{
public MyObject;
public MyCLass()
{
MyObject = new MyObject();
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 23
在调用基本构造函数之前初始化具有初始化程序的字段,而如果初始化程序在主体中,则仅在调用基本构造函数之后执行.
如果基础构造函数调用虚方法,这可能是相关的 - 但我个人试图避免这种情况.
示例代码:
public class Base
{
public Base()
{
Dump();
}
public virtual void Dump() {}
}
public class Child : Base
{
private string x = "Initialized at declaration";
private string y;
public Child()
{
y = "Initialized in constructor";
}
public override void Dump()
{
Console.WriteLine(x); // Prints "Initialized at declaration"
Console.WriteLine(y); // Prints "" as y is still null
}
}
Run Code Online (Sandbox Code Playgroud)