c# – 设置仅获取属性的值的首选方法:构造函数与支持字段
发布时间:2020-12-15 19:30:48 所属栏目:百科 来源:网络整理
导读:编辑:虽然我已经接受了 David’s回答,但也应该考虑 Jon’s回答. 设置只读(仅获取?)属性的值首选哪种方法:使用支持字段或使用构造函数?假设设计是针对属性而不是字段(将来,可能会有更新要求属性具有可以排除使用字段的setter). 鉴于以下简单示例,首选哪种
编辑:虽然我已经接受了
David’s回答,但也应该考虑
Jon’s回答.
设置只读(仅获取?)属性的值首选哪种方法:使用支持字段或使用构造函数?假设设计是针对属性而不是字段(将来,可能会有更新要求属性具有可以排除使用字段的setter). 鉴于以下简单示例,首选哪种方法?如果一个优先于另一个,为什么? 选项1(支持领域): class SomeObject { // logic } class Foo { private SomeObject _myObject; public SomeObject MyObject { get { if( _myObject == null ) { _myObject = new SomeObject(); } return _myObject; } } public Foo() { // logic } } 选项2(构造函数): class SomeObject { // logic } class Foo { public SomeObject MyObject { get; private set; } public Foo() { MyObject = new SomeObject(); // logic } } 解决方法
它取决于“new SomeObject();”所需的时间.以及将要调用吸气剂的可能性.
如果创建MyObject的成本很高,并且每次创建Foo()的实例时都不会使用它,那么选项1是个好主意,这就是所谓的延迟初始化. Google Chrome等程序会大量使用它来缩短启动时间. 如果您每次都要创建MyObject,并且经常调用getter,那么您将使用选项2保存每次访问的比较. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |