我想知道在C#代码中引用私有字段的首选方法是什么?
在变量_
前面使用下划线还是使用this
是首选?
这两种款式的优点和缺点是什么?
代码
private string _name;
private void getName()
{
return String.format("{0} - hello", _name);
}
或第二种方法
private string name;
private void getName()
{
return String.format("{0} - hello", this.name);
}
我更喜欢第二种方法,因为我更清楚这个变量名属于这个实例,我在Javascript中广泛使用它们,但是我没有看到它们在C#中使用,大多数情况下第一种风格更喜欢
答案 0 :(得分:4)
对此没有任何规则或任何一般性建议。你应该选择一种方式并坚持下去,或者如果你是一个团队就同意一个方法。
使用下划线优于this
的优势在于它是变量名称的一部分。您只能_name
访问_name
,而不能访问name
。当您使用this
时,您也可以使用name
而不是this.name
来访问它。
JavaScript约定并没有真正转换为C#私有成员,因为JavaScript中没有私有成员,并且没有类范围,因此访问成员的唯一方法是使用this.
答案 1 :(得分:3)
通常,C#使用引擎盖下的第一种风格。这样就可以很容易地将私有变量与属性区分开来,其中大部分时间都应该使用属性,除非在属性代码中。 C#的进步使得支持领域的需求变得更加普遍。
请注意,第二种样式并非真正必要 - 除非您还有一个名为this
的局部变量或参数,否则name
是多余的。
答案 2 :(得分:1)
我们的团队对私有成员命名约定有很大的争议:StyleCop标准是使用this
,这是区分所有成员(字段,属性和方法)与非成员的非常好的方法,但它确实有时会与方法参数创建名称冲突。
最后,我们就this
和_
达成了妥协,并写了一个StyleCop规则来强制执行此操作。当时双方的人都认为已经做出了妥协,但现在尘埃已经尘埃落定,我实际上发现它非常实用。
使用下划线可以轻松访问私有字段,并保证不会发生名称冲突,this
可以保持一致的访问权限。