通常,无论如何,属性都由变量支持.即使你有一个自动实现的属性,如下所示:
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
幕后仍有变数.并非所有属性都由变量支持(例如DateTime.Now
),但绝大多数属性都是.
实际上,您应该始终使用属性来访问其他类型的数据,而不是公开变量.(换句话说,变量本身应该是私有的.)这样你就可以将类的API与它的实现分开了......一个类如何存储它的数据应该只涉及类本身.
如果您只是引用类本身中的一段数据,那么您根本不需要属性,除非您想要在更改它时执行验证,或者类似的事情.
在通过属性公开变量之前,值得仔细思考 - 如果你只是一直这样做,你会失去一定数量的封装; 类型通常不应该只是由其他代码操纵的数据集合.他们应该使用其中的数据来公开更高级别的操作.这有点难以描述,我并不是说这些属性本身就不好 - 只是如果你不小心它们会被过度使用.