假设我们有一个变量,我们想要将其命名为Fubar
假设Fubar
是String
!
这意味着,我们将Fubar定义为:
public string Fubar;
现在,假设我们希望
Fubar
具有getter和setter(或换句话说,成为C#属性)!private string Fubar;
public string Fubar_gs
{
get
{
//Some fancy logic
return Fubar;
}
set
{
//Some more fancy logic
Fubar = value;
}
}
好极了!没关系,如果我希望将属性命名为Fubar,而不是原始变量,该怎么办?
显然,我只是将两个变量都重命名。但是问题是,原始变量的最佳名称是什么?
有这种情况的命名约定吗?
最佳答案
对于Microsoft's naming conventions,正确的方法是:
private string fubar;
public string Fubar { get { return fubar; } set { fubar = value; } }
但是,许多人更喜欢在私有(private)字段前加下划线,以最大程度地减少在打算使用该属性(property)时误用资本和使用该字段的可能性,反之亦然。
因此,通常会看到:
private string _fubar;
public string Fubar { get { return _fubar; } set { _fubar = value; } }
您采取的方法最终取决于您。默认情况下,StyleCop将强制执行前者,而ReSharper将强制执行后者。
在C#6中,提供了新的语法来声明属性的默认值或将属性设置为只读,从而减少了对在
get
和set
方法中没有任何特殊附加逻辑的后备字段的属性的需要。您可以简单地写:public string Fubar { get; set; } = "Default Value";
或者
public string Fubar { get; } = "Read-only Value";