我已经看过使用this
的访问方法和不使用的访问方法。他们会产生相同的结果吗?
例如:
public setName(string name){
this.name=name;
}
public setName(string n){
name=n;
}
public void getName{
return name;
}
public void getName{
// is "this" here useless?
return this.name;
}
有什么区别?哪种方式更好?
答案 0 :(得分:1)
如果要引用与方法中的局部变量同名的类级别变量,则需要使用this
。只有在变量具有相同名称时才需要它。如果您愿意,总是可以使用this
,但这不是必需的。和
this.s = s;
和
s = myString;
只是一种风格偏好,而不是一场重大的战争争夺战。
答案 1 :(得分:0)
是的,它们在功能和结果字节码(afaik)方面完全等效。
'this'关键字仅在引用实例变量(使用类或相关超类定义的非静态变量)时使用,以便将其与同名的局部变量区分开来。在这种情况下省略'this'关键字会将局部变量分配给自身。
关于什么是更好的编辑,有些人不喜欢命名变量相同,但有些人喜欢使用'this'来显式引用实例变量。它归结为品味和可读性。
答案 2 :(得分:0)
它是一样的。 如果你的方法有一个与类字段名称相同的变量(例如“name”),你需要写“this.name”来引用类字段,因为只写“name”你引用的是方法变量。
所以在你写的第二个例子中,你有两个不同的名字(“name”和“n”),你不需要写“this.name”。 顺便说一句,在第二个例子中,如果你愿意,你可以自由地说“this.name”,但它不是强制性的......(在我看来它不是强制性的,但它是一个很好的方法来制作你的代码更容易阅读)。
最后选择您喜欢的方法。 在我看来,第一个是编写代码的更“优雅”的方式。