什么时候做C#自动属性初始化?

JNF*_*JNF 0 c# asp.net page-lifecycle automatic-properties

在webforms .aspx页面系统上,母版页具有一些自动初始化的属性,因此

public bool MyProp => bool.Parse(Service.Settings["YorN"]);
Run Code Online (Sandbox Code Playgroud)

分析页面加载,我看到PreRender事件之间,和其中一个属性的初始化存在很大差距.

我在哪里可以找出延迟?这两者之间有什么关系?

Ser*_*rvy 6

那不是汽车财产.这是一个表达身体的成员.

每次调用属性getter时,您的MyProp计算实现.所以你的情况,每当代码运行被调用,并且它的运行每次它被称为时间.bool.Parse(Service.Settings["YorN"]); MyProp

如果您使用了自动属性,那将是

public bool MyProp {get;} = bool.Parse(Service.Settings["YorN"]);
Run Code Online (Sandbox Code Playgroud)

然后它将在创建实例之后运行,并且在调用构造函数之前运行(当其他字段初始化程序运行时).请注意,由于此代码在字段初始值设定项中运行,因此它不能使用隐式引用(this),因此如果Service是实例变量,则不会编译.

  • @Servy:不幸的是,我不相信这里有任何好的术语.这是模棱两可的一点.另一个存在二分法的方面是,人们常常认为构造函数是"创建实例的东西" - 而实际上它是"初始化现有实例的东西"......只是"构造函数调用"首先创建了一个对象然后开始调用构造函数链.抱歉没有更好的答案:( (2认同)