在 C# 中声明属性
Posted
技术标签:
【中文标题】在 C# 中声明属性【英文标题】:Declare Property in C# 【发布时间】:2014-05-17 19:24:07 【问题描述】:什么时候应该使用:
public string User get; set;
什么时候:
private string _user;
public string User
get return _user;
set _user = value;
以及何时:
public string User;
例如,我有 Class
包含 user
属性。
我应该如何决定应该使用我写的哪一个选项?
【问题讨论】:
你的第一个例子无效。 我编辑了,只是写错了。现在有效 【参考方案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
字段。
就个人而言,我会避免在类中使用公共变量。
【讨论】:
"您不需要支持 _user 字段。" - - > 这只是书写错误。而且我没有理解这一行:` this.RaisePropertyChanged(x => x.User);` 很好,我是这么认为的。不要太担心RaisePropertyChanged
行,它只是一些可以(并且经常)出现在setter 中的代码示例。它引发了 XAML 绑定侦听的 PropertyChanged
事件,这在 MVVM 模式中很重要。【参考方案2】:
没有一般规则,如果您在一个团队中,这可能取决于您的团队商定的约定。根据经验,使用 setter 和 getter 可以让您更好地控制可以对属性执行的操作,例如验证输入、格式化输出、引发事件、决定可以私下设置/只读属性,等等
【讨论】:
【参考方案3】:1st (autoproperty) 基本上是做 2nd 的简写形式。 至于用法,它有助于验证输入、引发事件等,例如
private string _user;
public string User
get return _user;
set
if(!(value == ""))
_user = value;
在任何情况下,建议使用 getter 和 setter。
【讨论】:
以上是关于在 C# 中声明属性的主要内容,如果未能解决你的问题,请参考以下文章