回 帖 发 新 帖 刷新版面

主题:菜鸟提问:关于this指针的困惑

static void Main() 
{

   Application.Run(new HelloForm());
}
private void pushButton_Click(object sender, System.EventArgs e)
{
   //Display the Hello World message
   messageLabel.Text = "Hello World";
}
private void exitButton_Click(object sender, System.EventArgs e)
{
   //Exit the project
   this.Close();
}
我刚看了第一个visual c#的程序:helloworld。关于this指针不是很明白。上面pushButton和exitButton是两个button,messageLabel是一个label。点击pushButton后,在messageLabel里应该显示helloworld。然后点击exitButton时退出程序。我的问题是:
1。在exitButton_Click函数里,为什么必须用this指针?这里他指代的是什么?用什么可以代 替  它?根本不能用exitButton.Close()来代替,它甚至没有这个函数。

2。在函数pushButton_Click里,虽然加入this.Text = "Hello World";没有编译错误,但是好像对程序没有任何影响。这时的this又是指代什么?

3。到底什么时候用this指针?有什么好处和坏处?

请各位大侠不吝赐教。多谢了先。

回复列表 (共7个回复)

沙发

this代表当前类的当前实例

对于窗体而言,自然就是当前窗体喽(窗体是类)

板凳


我给窗体起的名字是HelloForm,那么就是说这个类的名字也是HelloForm喽?

如果不用this指针,应该用什么呢?

用HelloForm也不对,没有close这个函数

3 楼

HelloForm是类名,this是实例代表
请先区分类和实例
如果使用“类名.”的形式,只能使用静态成员

学习C#语言需要先了解OO概念

4 楼

这个我也看了点东西。现在有些概念了。
那么在这个小程序哩,我并没有用类去定义什么实例,是不是说可以由一个隐藏的,或者说默认的实例?在这个小程序里,只能用this指针,没有东西可以代替它?

5 楼

程序类运行自然会有实例,new关键字实例化对象是众所周知的
你看看主程序Main方法,里面有实例化的代码

如果访问实例自身的成员,自然用this

6 楼


谢喽。看来还得加油阿

7 楼

说了这么多.不就是类的指针吗,还可以用别的方法,估计有api函数可以实现吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册