在C#中声明属性

时间:2014-04-05 11:43:35

标签: c# properties public

什么时候应该使用:

public string User { get; set; }

以及何时:

private string _user;
public string User
{
     get { return _user; }
     set { _user = value; }
}

以及何时:

public string User;

例如,我Class包含user属性。 我应该如何决定我应该使用哪一个选项?

3 个答案:

答案 0 :(得分:1)

没有一般规则,如果您在团队中,则可能取决于您团队的约定惯例。根据经验,使用setter和getter可以让您更好地控制可以对属性执行的操作,例如验证输入,格式化输出,引发事件,确定可以私有地设置/读取属性,等

答案 1 :(得分:1)

1st(autoproperty)基本上是做第二名的简短形式。 至于用法,它有助于验证输入,引发事件等,例如

private string _user;
public string User
{
    get { return _user; }
    set
    { 
        if(!(value == ""))
            _user = value; 
    }
}

在任何情况下都建议使用getter和setter。

答案 2 :(得分:1)

作为一般经验法则,当您需要在getter或setter中执行其他操作时,您应该只使用具有支持字段的属性 - 验证某些输入,更改其他状态或提出属性更改通知,例如:

private string _user;
public string User
{
    get { return _user; }
    set
    {
        _user = value;
        this.RaisePropertyChanged(x => x.User);
    }
}

否则,您可以使用自动属性:

public string User { get; set; }

您不需要支持_user字段。

就个人而言,我会避免在课堂上使用公共变量。