相关疑难解决方法(0)

属性与字段:需要帮助掌握属性对字段的使用

首先,我已经阅读了关于这个主题的帖子列表,并且由于我对封装和字段修饰符(private,public..ect)的了解,我不觉得我已经掌握了属性.

我学习的C#的一个主要方面是使用封装在代码中保护数据的重要性.我认为'我理解这是因为使用修饰符的能力(私人,公共,内部,受保护).然而,在了解了属性之后,我不仅理解了属性的使用,而且还理解了C#中数据保护(我理解为封装)的整体重要性/能力.

更具体地说,当我到达C#中的属性时,我读过的所有内容都是你应该尝试使用它们代替字段,因为:

1)当您直接直接访问字段时,它们允许您更改数据类型.

2)它们为数据访问增加了一定程度的保护

然而,根据我的想法,我已经了解了字段修饰符的使用#2,在我看来属性只是生成了额外的代码,除非你有一些理由改变类型(#1) - 因为你是(或多或少)创建隐藏方法来访问字段而不是直接访问.

然后可以将整个修饰符添加到属性中,这进一步使我对属性访问数据的需要的理解变得复杂.

我已经阅读了不同作者关于"属性"的一些章节,并且没有人真正解释过对属性与字段与封装(以及良好的编程方法)的良好理解.

有人能解释一下:

1)为什么我想要使用属性而不是字段(特别是当它出现时我只是添加额外的代码

2)在跟踪其他人的代码时,有关识别属性的使用以及不将它们视为简单方法(除了get; set明显)之外的任何提示吗?

3)任何关于何时使用什么的良好编程方法的一般经验法则?

感谢和抱歉这篇长篇文章 - 我不想只问一个问题100x而不解释为什么我再问它.

c# encapsulation field properties

36
推荐指数
5
解决办法
1万
查看次数

清洁代码:对象应该具有公共属性吗?

我正在阅读"清洁代码"这本书,并且正在努力解决这个问题.在讨论对象和数据结构时,它指出以下内容:

  • 对象将其数据隐藏在抽象之后,并公开对该数据进行操作的函数.
  • 数据结构公开其数据并且没有有意义的功能.

所以,我从中获得的是我不应该在我的对象上有任何公共属性,我应该只有对属性执行操作的方法.如果我确实需要访问属性,它们应该在数据结构上,可以从我对象上的方法返回?使用这种方法,似乎我需要为我的对象上的Height属性使用GetHeight()和SetHeight()方法,而不是仅使用属性的getset.

也许我不明白究竟是什么建议,但这是我对" 对象隐藏他们的数据 "的理解.如果你能帮助我理解这一点,我将非常感激!

提前致谢!

c# abstraction properties object data-structures

27
推荐指数
5
解决办法
2873
查看次数