我的名字私有成员变量_x
为了避免这样的情况下。 Arguments for/against this abound。
private string _name;
public Employee(string name, string alias)
{
// Equivalent to `this._name = name`, as _name is not shadowed
_name = name;
}
在另一方面,我反对命名参数_x
因为参数名合同 公众的一部分。这个合同应该是干净的,稳定的,并且应该由包含成员变量名称的内部实现来决定是否而不是。
在过去,我使用employeeName
,aName
和theAlias
这样的名称来表示这种情况下的参数,但我不喜欢最终被使用的人为修饰符。如果我不能使用私人变量的下划线,我会使用this.x
而不是三思而后行。
需要这种形式是由于this
是在C#和可变阴影的 “隐式”。也就是说,this.x
是必要的,因为x
将引用一个局部变量/参数,如果它存在 - 并且它在这里执行。
private string name;
public Employee(string name, string alias)
{
// Re-assignes parameter to itself.
// Does NOT assign member variable!
name = name;
}
我认为,强调在名称打破“CLS兼容”,但不是一个问题对我来说,只有采用这种约定私人成员变量避免公开揭露这种不兼容的名字。
请参阅[此(C#参考)](http://msdn.microsoft.com/en-us/library/dk1507sz.aspx)。 – 2013-02-09 19:19:12
否则,您将无法区分参数和类别字段?您可以将它们命名为_name,但它不是“漂亮”,并且说“_name = name” – TryingToImprove 2013-02-09 19:25:58
这只是命名习惯..请看这里:http://msdn.microsoft.com/en-us/library/xzf533w0 %28VS.71,经典%29.aspx – TryingToImprove 2013-02-09 19:40:18