C#BestPractice:私有var和Public Getter/Setter或Public Var

Gav*_*vin 5 c#

以下两种编码风格有哪些优点和区别......

public void HelloWorld () {

        private string _hello;

        public string Hello {    
           get
            {
                return _hello;
            }
           set
            {
                _hello = value;
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

要么

public void HelloWorld () {

        public string Hello { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我的偏好是简单的简单代码,但有兴趣听到意见,因为我看到许多开发人员坚持漫长的路线.

Tho*_*que 14

第一个允许您自定义访问者.例如,您可能希望验证setter中的值,或者懒惰地在getter中加载该值.它还允许您创建支持字段readonly.

第二种形式不允许自定义(除了getter和setter的可访问性).它只是第一种形式的速记等价物.

如果您不需要在getter和setter中执行任何特定操作,则第二种形式通常更方便.


Ada*_*ear 5

您的第二个示例不是公共变量,而只是一个自动属性。汽车属性只是第一个示例的语法糖。

就一个相对于另一个的优点而言,第一种方法使您可以在getter或setter中做额外的工作(例如检查null或属性更改通知):

private string _name;
public string Hello {    
{
    get
    {
        if(_name == null)
            _name = "Default Name";

        return _name;
    }
    set
    {
        _name = value;
        OnPropertyChanged("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)