自从我发现汽车属性后,我就尝试在任何地方使用它们。在我拥有的每个属性都会有一个私有成员之前,我将在类中使用它。现在它被 auto 属性所取代。我以通常使用普通成员字段的方式在类中使用该属性。问题是该属性以国会大厦开头,这使得以这种方式使用它时看起来有点奇怪。我不介意房产以前以国会大厦开头,因为它们总是在“点”后面。现在,我发现自己在内部使用的所有属性前面都加上了this.
,以安抚我的感觉。
我的困境是,在我总是有点反对在所有内部成员的使用前加上前缀this.
,除非“必要”(如在 setter 或构造函数中)。因此,我正在寻求对此的第二意见。有没有标准的好方法来做到这一点?我应该停止抱怨吗(我有成为“蚂蚁驼背”(荷兰语表达)的倾向)?
前:
class Foo
{
private Bar bar;
public Bar Bar { get { return bar; } }
public Foo(Bar bar)
{
this.bar = bar;
}
public void DoStuff()
{
if(bar != null)
{
bar.DoMethod();
}
}
}
后:
class Foo
{
public Bar Bar {get; private set;}
public Foo(Bar bar)
{
this.Bar = bar;
// or
Bar = bar;
}
public void DoStuff()
{
if(this.Bar != null)
{
this.Bar.DoMethod();
}
// or
if(Bar != null)
{
Bar.DoMethod();
}
}
}
更新
似乎意见不一,尽管更多的人赞成前缀this.
. 在 auto 属性之前,我一直非常反对this.
在构造函数和 setter 中添加前缀 with 而不是(正如我之前提到的)。但现在我只是不知道了。
附加说明:将属性命名为与类 ( ) 相同的事实也很常见,这public Bar Bar { get; private set; }
也使我倾向于使用前缀。每次我输入Bar.DoMethod()
,我都觉得它看起来像一个静态方法。即使 VSBar
是静态方法,它也会着色,并且您不能拥有具有相同签名的静态方法和实例方法。当它被着色时,很明显它是一个静态方法,但是当它没有着色时,它不是 100% 清楚它不是一个静态方法。例如,您可能只是缺少一个using
语句,但也只是因为我不习惯将不着色与它是否是静态调用联系起来。在我通过成员的情况下的第一个字母的大写或在属性的情况下的“点”(例如“点”foo
中(Foo)foo.Bar.DoMethod()
)。
(目前很难选择“接受的答案”)