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

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...
    }
}

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

显然,在这个例子中它没有差异,因为它们都只是引用相同的变量。但是,公共属性的使用有关现实世界是什么?

在一般情况下,你的公共属性进行非常少,在这种情况下,它是确定给他们打电话?还是人们投入了大量的功能集成到他们的公共属性不应由内部类的引用调用?

我看到在另一篇关于不把大量的功能集成到属性的东西,因为他们检查的调试器可以执行意想不到的效果。是真的吗?

有帮助吗?

解决方案

使用属性 - 可在setter和getter应该应用内被封装的任何逻辑,甚至类本身内。如果在干将内没有逻辑和setter它仍然不是安全使用领域的自己,因为如果在任何时候你想添加周围的进入这些领域的逻辑,你将不得不重构等等。

其他提示

我相信你应该引用属性作为通用做法。虽然在这个特殊的例子是真的没有多大的差别,该get / set访问提供抓物业时多做一点工作的能力。例如,我们的很多财产“得到”存取更复杂的数据结构中执行一些查找或如果没有已定义设置的默认值。所以,该类的其余部分可以利用这个逻辑的优势,我们做使用性能的一个习惯。正是这样,我们就不必太用力去想,我们尝试推广这种做法。

有可能是在我们想要直接访问底层数据成员实例,但那时,是与特定原因有意识地决定,它往往是例外。

我喜欢性质,因为它们很容易地处理只读的情况下,很容易与您可能需要做任何基本的验证来包装它们。

如果我只是在内部变量的值,我把这些变量公众 - 有没有害处这样做。我一直使用的公共属性,当我想要做的响应无论是观看还是值的变化的东西 - 即,将其写入数据库,设置其他事情(如您的示例的第二部分)<。 / p>

你要问的问题是,你是否希望你的类里面发生了什么触发这些事件。如果你这样做,相同的方法,外线来电显示会,然后通过属性来访问值。如果你只是想读值,使用内部变量。

要回答你的问题,有没有危害做任何一种方式 - 只需考虑的潜在副作用

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top