TA贡献1828条经验 获得超6个赞
一个重要的区别是接口可以具有属性但不具有字段。对我来说,这强调应该使用属性来定义类的公共接口,而字段则用于类的私有内部工作。作为一项规则,我很少创建公共字段,同样我很少创建非公共属性。
TA贡献1891条经验 获得超3个赞
我将举几个使用可能使齿轮转动的属性的例子:
延迟初始化:如果你有一个对象的属性,加载成本很高,但在正常的代码运行中没有被访问,你可以通过属性延迟加载。这样,它只是坐在那里,但是第一次另一个模块试图调用该属性时,它会检查底层字段是否为空 - 如果是,则继续并加载它,调用模块不知道。这可以大大加快对象初始化。
脏跟踪:我在StackOverflow上从我自己的问题中实际了解到了这一点。当我有很多对象在运行期间可能已经更改了值时,我可以使用该属性来跟踪是否需要将它们保存回数据库。如果没有对象的单个属性发生更改,则IsDirty标志不会被触发,因此在决定需要返回数据库时,保存功能将跳过它。
举报