c# - 为什么需要使用 "this"(有些啧啧)

标签 c#

只是按照一些教程(http://www.techotopia.com/index.php/Hiding_and_Showing_Forms_in_C_Sharp) 其中说:

如前一节所述,为了从显示和内存中删除表单,有必要关闭而不是隐藏它。在 Visual Studio 中,再次双击子窗体中的按钮以查看 Click 事件过程。再一次,因为按钮在我们要关闭的表单中,所以我们需要在调用 Close() 方法时使用 this 而不是 subForm:

  private void button1_Click(object sender, EventArgs e)
  {
            this.Close();
  }

我仍然不明白为什么要在这里使用 this.Close(),而不是仅仅使用 Close()

(上面关于 Hide() 方法的说法很相似)。

最佳答案

在这种情况下,this 实际上可以省略。 this 表示“类的当前实例”。在某些情况下 this 是必需的,例如当实例变量与局部变量同名时。在这种情况下,this 必须用于访问实例变量而不是本地变量。

例子:

public class Test
{
    private int i;

    public Test(int i)
    {
        this.i = i; // Sets the instance variable
        i = 1; // Sets the local variable
    }
}

编辑:Marc Gravell 正确地提到了仅在实例上起作用的扩展方法。因此,要在类的当前实例上调用某些方法,您也必须使用 this

关于c# - 为什么需要使用 "this"(有些啧啧),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23671747/

相关文章:

c# - 如何将 null 传递给 asp :Parameter

单击 C# Form X 按钮

c# - 如何强制执行 Catch block ?

c# - MVC 查看位于 Android 平板电脑上的图像和视频

c# - 使用 GetResponseStream readToEnd 读取 HTTPWebReponse 返回奇怪的字符

c# - 如何重置 Visual Studio 2017 中的默认设置存储路径?

c# - 使 dapper SQL 语法着色

c# - 在代码隐藏中将表达式从文本框转换为数学表达式

c# - 无法在 Task<IActionResult>、IActionResult 和 ActionResult<Thing> 之间做出决定

c# - 从非托管代码 : SAFEARRAY 调用托管 COM