公共财产定义

Koo*_*bin 4 c# variables field properties class

为对象定义属性而不是直接访问私有变量有什么好处?

代替 :

public class A

    private _x as integer = 0

    Public property X() as integer
        Get
            return _x

        End Get
        Set(ByVal value As integer)
            _x = value
        End Set
    End Property

end class
Run Code Online (Sandbox Code Playgroud)

为什么我们不能做以下事情:

public class A

    public _x as integer = 0

end class
Run Code Online (Sandbox Code Playgroud)

有什么好处?

Age*_*191 5

一个好处是许多框架为了绑定目的而不是字段来查找类的属性.因此,_x当您想知道为什么框架没有按照您的预期设置值时,直接暴露该字段会引起一些令人头疼的问题.

同样由于封装,您可以更改调用代码与字段交互时发生的情况.隐藏属性getter/setter后面的字段允许您执行其他操作,例如在值更改时触发,更新其他内部状态或完全更改实现,因此它只是对子对象的包装调用.