c# - "this"在 Java 和/或 C# 中有何用途?

标签 c# java

假设我有一个简单的示例控制台程序,如下所示。我的问题是关于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/

相关文章:

java - WebService HTTPS调用的读取超时实现

c# - 如何重构这些有一行差异的函数

c# - 在 C# aspx 页面上使用子字符串

c# - 如何在 Windows 窗体上显示动画 GIF (c#)

java - 创建要调用的方法列表

java - Servlet 映射 Tomcat 错误 Eclipse

Java 隧道和 tcp 代理

c# - 使用错误的 web.config 在 azure 中部署的应用程序

c# - 字典值返回时删除了斜杠 '\'?

java - Swing JTable : Event when row is visible, 或滚动到底部时?