c# - Get Set 的目标

标签 c#

get set 的唯一目标是在不破坏封装概念的情况下访问私有(private)/ protected 变量吗? 因为根据我的发现,我看不到 get set 属性的任何其他用途。

最佳答案

不 - 这是通常它所做的,但访问器可以执行您想要的任何计算。从根本上说,属性旨在提供对值的逻辑状态的访问 - 但该逻辑状态不必在实现中转换为相同类型的单个字段>.

例如,我的 Noda Time 项目有一个 LocalDate 类型,其属性为 YearMonthDay。在 v1 中,LocalDate 的支持字段是一个 LocalDateTime,它本身有一个表示自 Unix 纪元以来的滴答数的支持字段,并且计算了年/月/日从那开始。

在 v2 中,有一个完全不同的实现方式,支持字段将年/月/日值打包到单个 long 字段中,但所需的计算要少得多。

调用者不需要知道有任何变化,但在两个版本中,getter 只是返回支持字段的值。他们隐藏了实现细节。

具有 getter 和 setter 的属性更有可能由一个简单的字段支持 - 但在那里,setter 可能会很好地执行验证检查,而 getter 也可能是惰性的。

关于c# - Get Set 的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27937186/

相关文章:

c# - Environment.TickCount 是不够的

c# - 在部分类中设置属性的属性

c# - MVC5使用MvcSiteMapProvider构建twitter Bootstrap 菜单

c# - 简单对象和数组是如何传递的?

c# - 在方法中传递数据对象或数据对象的一部分?

java - 创建占用特定数量 CPU 和 RAM 的任务

c# - 如何将 PdfPTable 插入现有的 PDF 模板?

c# - 使用 async/await 时是否需要使字段线程安全?

c# - 如何找到旧密码让用户更改它

c# - 来自一个页面的多个 AJAX 请求的 ASP.NET MVC HTML.AntiForgeryToken()