在构造函数完成之前,是否存在构造函数之外的代码可以访问具有完全自包含构造函数*的类型的情况?也就是说,是否可以在以任何方式使用对象之前保证运行自包含构造函数?
*没有将this
参数传递给任何方法的构造函数,包括通过调用自身的任何方法隐式传递它。
答案 0 :(得分:5)
是一个自包含的构造函数,保证在以任何方式使用对象之前运行它?
不,不保证。看到这个链接
因此,无需调用构造函数即可启动对象。
因为对象的新实例初始化为零并且没有运行构造函数,所以该对象可能不代表该对象认为有效的状态。
您可以通过以下方式重现它:
public class DemoClass
{
public int Prop = 5;
public DemoClass()
{
Prop = 6;
}
}
0
输出 Bundle
,而不是5或6 ......