我有时会使用{get; set;}在c#中,因为有人告诉我有时我使用的技术需要它们(linq2sql?)
我想知道为什么有时某个技术可能需要一个带有getter和setter的私有字段(因此,速记是一个不错的捷径)而不是一个公共领域.
我知道在getter或setter中具有逻辑是有意义的,但对于空值而言不确定吗?
答案是否与此帖子相同,如果可以,请告诉我!
What is exactly the point of auto-generating getters/setters for object fields in Scala?
解决方法:
关键是将私有成员暴露给您的类用户是不好的封装.通过使用属性,您可以以一种无需更改接口即可更改该值的内部实现或存储的方式公开信息.
例如.如果您决定存储一个整数作为字节以内部保存内存,则所有调用代码都必须重新编译.即使您拥有所有源代码,这也不方便,但是如果您的代码是别人正在使用的库,则非常不便.
另一个常见的示例是,如果值更改,您以后可能希望引发一个事件.
其他原因是某些客户端可能通过反射查找属性,但不查找成员字段-例如,表单编辑器和属性网格会这样做.
此外,您可以将属性设置为虚拟,而字段则无法做到.
或者换个角度来看,您能想到to_not_使用属性的原因是什么.