c#风格的私有变量使用_或this

本文关键字:this 变量 风格 | 更新日期: 2023-09-27 18:08:08

我想知道在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#中使用,主要是第一种风格更喜欢

c#风格的私有变量使用_或this

实际上没有任何规则,甚至没有任何一般的建议。你应该选择一种方式并坚持下去,如果你是一个团队,你应该同意其中的一种方式。

this相比,使用下划线的好处是它是变量名的一部分。您只能以_name的身份访问_name,不能以name的身份访问。当你使用this时,你可以像访问name而不是this.name一样访问它。

JavaScript惯例并不能真正转化为c#私有成员,因为JavaScript中没有私有成员,也没有类作用域,所以访问成员的唯一方法是使用this.

c#通常在底层使用第一种样式。这使得私有变量可以很容易地与属性区分开来,在大多数情况下,除了在属性代码中,您应该使用属性。c#的进步也使得对支持字段的需求变得不那么必要了。

注意,第二种样式并不是必需的——this是多余的,除非您也有一个名为name的局部变量或参数。

我们的团队在私有成员命名约定上有很大的争论:StyleCop标准是使用this,这是区分所有成员(字段、属性和方法)与非成员的一种非常好的方式,但它有时会与方法参数产生名称冲突。

最后,我们在this_上达成了妥协,并编写了一个StyleCop规则来强制执行。当时双方都觉得做出了一个糟糕的妥协,但现在尘埃落定了,我发现它实际上是非常实用的。

下划线使得访问私有字段很容易,保证没有名称冲突,this保持一致的访问。