您是否在类本身中使用数据成员或公共属性?

Joh*_*ski 3 c# asp.net properties data-members

如果我有一个像这样的简单类设置:

class MyClass
{
    private string _myName = string.Empty;

    public string MyName
    {
        get
        {
            return _myName;
        }
    }

    public void DoSomething()
    {
        // Get the name...
        string name = string.Empty;

        name = _myName;

        // OR

        name = MyName;

        // ...and do something with it...
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个,公共财产或数据成员?

显然,在这个例子中它没有什么区别,因为它们都只是引用相同的变量.但是公共财产的现实用途呢?

一般来说,公共属性执行得非常少,在这种情况下可以调用它们吗?或者人们将大量功能放入他们的公共属性中,不应该被内部类引用调用?

我在另一篇文章中看到了一些关于不向Properties中添加大量功能的内容,因为在调试器中检查它们可以执行意外的结果.真的吗?

And*_*are 8

使用属性 - 即使在类本身内,也可以应用封装在setter和getter中的任何逻辑.如果getter和setter中没有逻辑,那么使用字段本身仍然是不安全的,因为如果您希望在访问这些字段时添加逻辑,则必须重构更多.


Jam*_*aro 5

我相信您应该将该物业作为一般惯例参考.虽然在这个特定的例子中它确实没有太大的区别,但get/set访问器提供了在抓取属性时做更多工作的能力.例如,我们的许多属性"get"访问器在更复杂的数据结构中执行一些查找,或者如果没有定义任何内容则设置默认值.因此,类的其余部分可以利用这种逻辑,我们养成使用属性的习惯.因此,我们不必过于考虑,我们试图概括实践.

可能存在我们想要直接访问基础数据成员的情况,但是这是具有特定原因的有意识决策,并且它往往是例外.