为什么在c#中使用所有属性而不是公共实例变量?

Tho*_*mas 4 c# class-design field properties

我知道属性有一些优点,但如果你认为你不需要属性,那么将它作为公共实例有什么害处?

人们说如果你稍后尝试将公共字段更改为属性会破坏代码,但根据我的经验,将其更改为属性不会破坏任何内容.

rod*_*igo 7

我认为人们的意思是它打破了ABI(二进制)兼容性,而不是API(源)兼容性.

尽管语法相同,但在幕后,对属性的访问和对成员变量的访问的编译方式也不同.

也就是说,如果您的变量/属性不是从您自己不编译的程序集中使用的,那么更改它就没有任何害处.但如果它是公共界面的一部分,那么最好将它作为一个属性,这样你将来不会后悔.

  • @Killercam:对属性的访问被编译为方法调用. (4认同)