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

人们使用 get 属性的原因是什么?放;而不是字段?

如何解决人们使用 get 属性的原因是什么?放;而不是字段?

我经常在类中看到属性,而不是字段。看起来像这样:

class TestClass
{
    public ulong Id { get; set; }
    public string Description { get; set; }
}

人们为什么要这样做?他们可以改用字段。我在那里至少看到一个专业人士 - 我们可以将带有 ref 关键字的字段传递给函数。是否有任何专业人士出于属性或其他原因使用它们那样

解决方法

主要原因是封装 - 值可以通过相应的属性进行更改,即使您后来决定该属性不应仅返回值,情况仍然如此。也许您发现您想要在值更改时触发事件?如果你有房产,那很容易。如果你有一个公共领域,你需要做出重大改变。

此外,属性可以是虚拟的,也可以在接口中声明。并且它们可以被声明为只读。

哦,它有助于调试:如果您想知道谁在更改您的值(意外),您可以在“集合”上设置断点。

,

人们使用属性而不是字段主要是由于编码约定。如果它不执行任何实际封装(在 POCO 的情况下),那么在 C# 中没有太大区别。大多数情况下,可以使用字段而不是属性,而不会产生任何后果。

// This:
public string MyValue;
// Could be later on changed to this:
public string MyValue { get; set; }
// With no compatibility issues.

尽管推测为什么约定是这样的方式很有趣。在 C# 中,属性和字段之间的差异从消费者的角度来看大多是隐藏的。在较旧的语言中不一定是这种情况。 IE。在 Java 中,您必须明确地编写 getter 和 setter 方法。因此,如果您在 Java 中有一个字段,现在您决定要封装它,那么您需要检查该字段的所有用法并改用 getter 和 setter。如果您使用动态库链接(前一段时间曾经是流行的部署方式),这可能是一个更大的问题。因此,从一开始就更容易封装字段,因此您将来不会遇到向后兼容性问题。当然,这些约定也适用于其他语言。

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