什么时候不使用私人领域?

时间:2010-06-17 20:59:38

标签: c#

在班级方法中使用私人字段时,何时应该被视为危险?我主要只是创建变量并将其设置为默认值,如null。然后在我的方法中引用它并从方法中将它设置为该对象类型的实例。

我不知道我的问题是否有意义,但如果不是,请告诉我,我会澄清。

3 个答案:

答案 0 :(得分:4)

如果你只需要一个方法调用一个方法,那么更喜欢使它成为一个局部变量而不是一个成员。变量越局部化,就越容易理解程序。

如果需要在多个调用中使用相同的对象,您可以考虑是否可以只读成员并在构造函数中设置该成员。

答案 1 :(得分:2)

一般来说,如果 要在你的班级中使用一个字段, 应该是私有的,但这通常是代码气味信号状态,即在许多地方管理。

本身并不差,但在这种情况下复杂性会迅速增长。

答案 2 :(得分:0)

如果变量包含敏感数据,您应该知道它仍然可以通过反射从外部访问。

否则,如果您可以避开私人领域,则不应使用私有领域。如果不能,如果正确使用了本地字段,则没有任何问题。

这是个坏主意:

public class Calculator()
{
    private int result;

    public int Add(int a, int b)
    {
        result = a + b;
        return result;
    }
}

因为如果两个线程同时调用Add()方法并且在第一个线程设置结果之后将上下文切换到设置结果的第二个线程并且两个调用都返回值,则可以获得竞争条件第二个。

这些错误很难调试,因为它们完全是随机的。