假设我有一个简单的示例控制台程序,如下所示。我的问题是关于this
。是唯一使用this
只是为了让您可以使用输入变量名称来分配给实例变量?我想知道 this
有什么用?不是在该程序的上下文中使用的吗?
public class SimpleClass {
int numberOfStudents;
public SimpleClass(){
numberOfStudents = 0;
}
public void setStudent(int numberOfStudents){
this.numberOfStudents = numberOfStudents;
}
public void printStudents(){
System.out.println(numberOfStudents);
}
public static void main(String[] args) {
SimpleClass newRandom = new SimpleClass();
newRandom.setStudent(5);
newRandom.printStudents();
}
}
以前,当我需要为与输入值具有相似性的实例变量名称分配一个值时,我必须对我的命名方案(或缺乏命名方案)发挥创意。例如,setStudent()
方法如下所示:
public void setStudent(int numberOfStudentsI){
numberOfStudents = numberOfStudentsI;
}
从上面的例子来看,似乎使用 this
取代必须这样做。这是它的预期用途,还是我遗漏了什么?
最佳答案
事情与您目前的看法完全相反:this
在 Java/C# 中是一个非常重要且经常使用的项目,因此有许多特殊的语法规则来规定它在哪里可以使用被假设。这些规则导致您实际上很少看到 this
被写出来。
但是,除了您的示例之外,还有许多其他情况无法避免显式 this
(Java):
- 引用内部类的封闭实例;
- 显式参数化对通用方法的调用;
- 将
this
作为参数传递给其他方法; - 从方法返回
this
(使用Builder模式经常出现); - 将
this
分配给变量;
...以及更多。
关于c# - "this"在 Java 和/或 C# 中有何用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20385184/