使用私有属性而不是私有字段有什么区别
private String MyValue { get; set; } // instead of private String _myValue; public void DoSomething() { MyValue = "Test"; // Instead of _myValue = "Test"; }
有任何性能问题吗?或只是一个命名惯例?
私有属性允许您抽象内部数据,以便对内部表示的更改不需要影响实现的其他部分,即使在同一个类中也是如此.私人领域不提供这种优势.使用C#3.0中的自动属性,我很少看到需要直接实现字段 - 私有或公共.
您可以从房产(私人,公共......)获得的巨大收益是它可以产生计算值与设定值.例如
class Person { private DateTime _birthday; private int _age { get { return (DateTime.Now - _birthday).TotalYears; } }
此模式的优点是,必须仅为N个其他值更新一个值以反映更改.无论可访问性如何,属性都是如此.私有财产与非私有财产没有特定的优势(当然,除了私有财产外)
你很少想私有财产.提供私人财产只是为了完整起见.如果你的属性只是获取/设置字段的值,那么没有性能差异,因为它很可能由JIT编译器内联.