微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 何时使用方法与属性进行类定义更好?

部分与 an earlier question of mine相关,我有一个系统,我必须将复杂数据存储为字符串.我没有将这些字符串解析为各种单独的对象,而是创建了一个包含所有这些对象的类,它有一些解析器逻辑将所有属性编码为字符串,或解码字符串以获取这些对象.这一切都很好,很好.这个问题不是关于解析器本身,而是关于我应该在哪里容纳解析器的逻辑.把它作为一种财产或一种方法一个更好的选择吗?

对于属性,例如公共字符串DataAsstring,get访问器将容纳将所有数据编码为字符串的逻辑,而set访问器将解码输入值并设置类实例中的所有数据.这似乎很方便,因为输入/输出确实是一个字符串.

方法的情况下,一个方法是Encode(),它返回编码的字符串.然后,构造函数本身将容纳解码字符串的逻辑并需要字符串参数,或者我编写一个单独调用的Decode(string str)方法.在任何一种情况下,它都将使用方法而不是属性.

那么,就代码的实际运行而言,这些路径之间是否存在功能差异?或者他们基本上是等同的,然后归结为个人偏好的选择或哪个看起来更好?在那个问题中……无论如何哪个看起来更干净?

解决方法

没有功能差异;属性只是从行为角度看的get和set方法对.

但是,通常,属性应该是轻量级的.如果您的财产的吸气剂或设定者正在进行大量计算,那么通常鼓励将它们移动到方法中.

这有明显的例外(即ORM领域中的延迟加载,其中get可以触发数据库调用).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐