我喜欢对所有非局部变量使用“this”语句:用于属性、类变量等。我这样做是为了便于代码阅读,便于理解该变量的来源。
object someVar;
object SomeProperty { get; set }
void SomeMethod(object arg1, object arg2)
{
this.SomeProperty = arg1;
this.someVar = arg2;
}
您如何看待,使用“this”的正确方法是什么?
我喜欢对所有非局部变量使用“this”语句:用于属性、类变量等。我这样做是为了便于代码阅读,便于理解该变量的来源。
object someVar;
object SomeProperty { get; set }
void SomeMethod(object arg1, object arg2)
{
this.SomeProperty = arg1;
this.someVar = arg2;
}
您如何看待,使用“this”的正确方法是什么?
this
是一件好事。this
消除歧义。
Ô_o:
public class Foo
{
private string bar
public Foo(string bar)
{
bar = bar;
}
}
下划线很蹩脚(它是 C#,不是 C++):
public class Foo
{
private string _bar
public Foo(string bar)
{
_bar = bar;
}
}
耶:
public class Foo
{
private string bar
public Foo(string bar)
{
this.bar = bar;
}
}
我以前只在构造函数中使用它,以便我可以将成员变量与 ctor 参数同名以保持一致性。既然我正在使用auto properties,我根本不会在任何地方使用它,除非我有我不想作为属性的成员变量(我只是不喜欢拥有完全私有的属性;不知何故似乎很奇怪)。
通常我会使用“this”关键字来消除类/对象变量和方法参数之间的任何歧义。
使用它有两个强制性角色
当您必须打破函数参数、局部变量名称和属性之间的歧义时。如果我要使用this,它只会出现在构造函数中,因为它是唯一可以使用相同名称的地方。
void SomeMethod(object SomeProperty, object someVar) { this.SomeProperty = SomeProperty; this.someVar = someVar; }
每当您需要将对当前对象的引用传递给另一个方法时。必须经常传递你的对象是一种代码味道。
其他任何事情都可能过于冗长。不要使用你不需要的东西。
我喜欢在分配给继承的属性时使用它。
我只在构造函数或方法参数与某种成员变量发生冲突时使用它。可能是属性或字段或其他任何东西。不过,这种情况并不经常发生。所以我很少使用它。
我认为 ReSharper 删除this.
了不需要的地方。也许默认情况下......它在这里,但不确定它是否是默认行为:p