C# 用这个。访问内部类成员?
在互联网上,我看到很多使用这个的代码。要访问类的本地成员,请执行以下操作:C# 用这个。访问内部类成员?,c#,coding-style,this,C#,Coding Style,This,在互联网上,我看到很多使用这个的代码。要访问类的本地成员,请执行以下操作: private String _whatever; public String Whatever { get { return this._whatever; } set { this._whatever = value; } } public void DoSomething() { String s = this.Whatever; this.DoSomething(
private String _whatever;
public String Whatever
{
get
{
return this._whatever;
}
set
{
this._whatever = value;
}
}
public void DoSomething()
{
String s = this.Whatever;
this.DoSomething();
}
(不要期望代码做一些合理的事情。我只是想展示“this”的一些不同用法。)
我想知道为什么要这样做?要使来源更加清晰?还是仅仅是浪费空间?这一切都归结为个人偏好和良好实践 在大多数情况下,这并不重要,但当您碰巧有一个与私有字段同名的参数时,这可能会很重要(这表明命名约定不好)
从我个人的观点来看,任何对参数或字段的变量引用,或者几乎任何东西,如果没有“this”限定符,都应该足够清楚。。。只有当它不是并且您无法更改它使其成为这样时,我才使用它。StyleCop中有一条规则要求-人们似乎只是在使用它;) 这是品味的问题。一些开发人员通常
此用于显示引用的对象是类的内部对象。它只是合成糖。它还取决于项目中的一些命名约定(例如,以下划线开头每个字段名)。编写此以区分类数据的每个程序员都有自己的原因。有时是因为他们习惯了,有时是因为项目的编码标准要求,也许他们正在使用这样的工具格式化代码
此外,如果您没有在成员变量和参数或局部变量之间进行区分(如在带有下划线的示例中),那么它是有用的。只是一个风格问题。IMO:
this._member
是多余的
鉴于
this.Property
是合理的。这样做是为了增加清晰度,特别是为了消除实例成员的参数歧义。我个人认为
- 如果您使用在私有变量前面加下划线的惯例,那么写这个是浪费空间
- 在方法调用之前,这是多余的
- 在物业访问前,这是否有意义仍有争议
总而言之,这是一个个人观点的问题(尽管与其他任何事情一样,你应该与你的同事保持一致和同意)。在这种情况下使用这个是可选的,但它有助于消除歧义。代码生成器将始终在此处使用此
,这比查找是否有必要(很少)要容易得多
程序员使用它是出于品味。奇怪的是,没有人提到这一点:它与IntelliSense的配合非常好。键入“this.”并弹出有效成员名称的列表。我很快就用“好吧,它使标识符的范围变得明显”来证明这一点。这是为了处理以下可能的情况:
private String value;
public String Whatever
{
get
{
return this.value;
}
set
{
this.value = value;
}
}
实际上,此。
广泛用于以下示例中的情况:
struct MyStruct
{
private int val1;
private int val2;
public MyStruct(int val1, int val2)
{
this.val1 = val1;
this.val2 = val2;
}
}
尽可能使用this.
可以使代码更清晰,并排除以下可能的错误:
private int myVar;
private void doSmth(int myVar)
{
// Some code here ...
myVar = 5; // Are you sure this is one you want to modify?
// Some code here ...
}
然而,这不是一个严格的规则,可能与个人编码风格有关。需要考虑的事项:
编译器不会在意,即使我们不熟悉您的类结构,我们这些在您背后工作的人也会确切知道您在做什么是的,并且有一条Resharper规则说它是不需要的,可以删除-请选择!我只是告诉re sharper忽略它,让StyleCop赢得这一场;)我不是在争论这是一条好规则还是一条坏规则——只是它确实存在,我确信这就是为什么这么多人遵循它;)我不会说“更安全”(编译器肯定可以处理它,或者您需要不同的编译器/语言);'更清晰的“/”更清晰的“听起来更适用。我添加了另一个示例来说明“更安全”的含义。但是我同意用“更清晰”来代替“更安全”。一个好的编译器应该在最后一个例子中用一个错误来报告歧义。在我看来,参数和成员使用相同的名称是“不好的”。