我的名字私有成員變量_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