普通属性还是带字段的属性?

Plain attribute or attribute with field?

我在这个例子中看到了很多代码片段:

    private string _possessor;
    public string Possessor
    {
        get { return _possessor; }
        set { _possessor = value; }
    }

我的问题是,为什么不直接使用纯 属性,如:

    public string Possessor { get; set; }

我在网上看,但真的看不出有什么不同?您可以在两个示例中设置值,第二个示例需要更少的代码并且看起来更干净。

在您展示的情况下,的确,每种方法都没有区别,第二种方法更干净。了解第一种方法很有用,因为有时您需要 属性 做的不仅仅是 get/set,所以在这种情况下您将需要使用第一种方法。

您还可以看到 here 每个新的 c# 版本都创建了不同的实现属性的方式。第二种方法是Auto-implemented properties

这样做的主要目的是帮助实现数据封装,这有助于我们将数据隐藏在 class 中,不被其他 class 看到。这也称为数据隐藏。 这样做的另一个很好的原因是在我们设置特定值之前需要检查一些特殊的验证或特殊的业务规则。

您可以从此站点阅读有关封装的更多信息https://www.geeksforgeeks.org/c-sharp-encapsulation/