为什么有人会使用私有get设置Puplic变量?

时间:2017-07-18 18:58:42

标签: c# get set private public

我在Unity工作时最后遇到了问题 我在编辑器中隐藏了一个公共变量 这引起了一些我报道为Bug的Proplems 因为对我来说它看起来像一个

我是这样做的:

public bool Variable_1 = true;

Unity支持成员对我说我的代码没有任何问题,但我应该这样做,因为这样做会更好:

private bool Variable_1{
    get
    {
        return this.Variable_1;
    }
    set
    {
        this.Variable_1 = value;
    }

}
public void Set_Variable_1(bool bool){
    this.Variable_1 = bool;
}

我想将其公开,因为我想从其他类

访问它

所以我的问题是为什么有人会使用第二个示例代码而不是第一个。那有什么好处? 因为在我看来,第一个例子更简单,占用的线条更少 [编辑] 21.7.17:我知道getter和setter方法更灵活,但在这种情况下不需要它。

感谢您抽出时间阅读本帖。 祝你有美好的一天,并保持编码

[编辑] 21.7.17:
另外我想指出我自己编程编程所以我没有调查集合直到现在。我试图理解这个网站www.dotnetperls.com/property中的例子,它现在与我的例子非常相似。我不知道这个网站有多好,但我最了解

1 个答案:

答案 0 :(得分:1)

确实没有理由将该字段设为私有属性,并通过公共setter方法设置其值。相反,您应该使用公共getter和setter创建一个属性。

public bool Variable_1 { get; set; }

除此之外,您的两个解决方案都不是一个好主意,公共字段允许任何人将值设置为任何值,从而无法执行任何验证关于新的价值。这当然也适用于如上所述的自动实现的属性。但是,如果您决定实施某些验证,则任何现有客户端代码都不会受到影响,因为公共API保持不变。在另一方面使用公共字段执行此操作将是一个重大更改,因为您将通过属性替换字段。

然而,第二个过于复杂,并没有提供任何优势。