注册
登录
编程中国
搜索
标签
帮助
编程论坛
»
论坛事务
»
新人交流区
» 请教有关this关键字的知识
搜索
学习型 ASP/PHP/ASP.NET 主机
30
元/年
全能
ASP/PHP/ASP.NET
主机,支持月付
专业
MSSQL
数据库空间,支持月付
专业
MySQL
数据库空间,支持月付
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
请教有关this关键字的知识
philmei
新手上路
帖子
19
精华
0
性别
男
注册时间
2007-11-20
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2007-11-22 22:44
只看该作者
请教有关this关键字的知识
在C#中this的用法有好几种。
我的C#书中是如下这样说的,但我没太懂,哪位帮我解释一下,可以吗?谢谢。
[b]this引用的第二种用法是把当前对象作为参数传给另一个方法,如下例:
class myClass
{
public void Foo(OtherClass otherObject)
{
otherObject.Bar(this);
}
}
让我们对这个例子做一些解释。我们有一个名为myClass.Foo的方法。在方法主体中,调用otherClass实例的Bar方法,传入对myClass当前实例的引用。这样Bar方法就可以使用myClass当前实例的公开方法和成员了。[/b]
这就这些,可以帮我解释一下吗,最好举个小例子。
搜索更多相关主题的帖子:
myClass
关键
知识
Bar
Foo
UID
219293
积分
209
阅读权限
10
在线时间
3 小时
最后登录
2007-11-26
查看详细资料
TOP
yms123
版主
帖子
7109
精华
9
性别
男
注册时间
2004-7-17
个人空间
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2007-11-22 23:19
只看该作者
this就相当于当前对象的指针,也就是说在对象内部由系统指定了this=myClass;
用this直接代替当前类的一个对象。
http://www.lxzhcn.net
版块版主招募中
网站论坛发帖无问题,欢迎发帖。
UID
1949
积分
78199
阅读权限
100
在线时间
434 小时
最后登录
2008-7-25
查看详细资料
TOP
philmei
新手上路
帖子
19
精华
0
性别
男
注册时间
2007-11-20
个人空间
发短消息
加为好友
当前离线
3
#
大
中
小
发表于 2007-11-22 23:46
只看该作者
谢谢回复!
otherObject指的是调用myClass.Foo的其它类的对象吗?
"Bar方法就可以使用myClass当前实例的公开方法和成员了" 这句话是什么意思呢?
扫地恐伤蝼蚁命,爱惜飞蛾纱罩灯
UID
219293
积分
209
阅读权限
10
在线时间
3 小时
最后登录
2007-11-26
查看详细资料
TOP
yms123
版主
帖子
7109
精华
9
性别
男
注册时间
2004-7-17
个人空间
发短消息
加为好友
当前离线
4
#
大
中
小
发表于 2007-11-23 00:10
只看该作者
otherObject.Bar(this);如果这个方法需要的参数是Object类型那就可以传入任何对象
this这里是一个当前类的对象,所以调用对象只能调用公开的方法和成员,
也就是使用public前缀的。
不过特殊的一点是如果在类内部使用this是可以调用private成员的比如
class myClass
{
private string tstr="abc";
public void Foo(myClassA ClsA)
{
ClsA.Bar(this);
}
public string ShowString()
{
return this.tstr;//这里this调用没有错误
}
}
class myClassA
{
private string tStr="";
public void Bar(Object Obj)
{
this.tStr=Obj.tstr;//传到类外部就会出错误
}
}
其实楼主只要记住在类内部,this不受任何public private 访问修饰的限制,但在外部this变成对象时就要受到限制,这是因为面向对象中的封装性。
http://www.lxzhcn.net
版块版主招募中
网站论坛发帖无问题,欢迎发帖。
UID
1949
积分
78199
阅读权限
100
在线时间
434 小时
最后登录
2008-7-25
查看详细资料
TOP
philmei
新手上路
帖子
19
精华
0
性别
男
注册时间
2007-11-20
个人空间
发短消息
加为好友
当前离线
5
#
大
中
小
发表于 2007-11-23 00:45
只看该作者
虽然还是不太明白,但我不好意思再问了,真的非常谢谢您!
我先往后学,再多积累点语法,然后我再回来领悟您的讲解。
现在您的举列我还不能完全看懂,呵呵
扫地恐伤蝼蚁命,爱惜飞蛾纱罩灯
UID
219293
积分
209
阅读权限
10
在线时间
3 小时
最后登录
2007-11-26
查看详细资料
TOP
guoxhvip
版主
帖子
3591
精华
0
性别
男
来自
聖西羅南看臺
注册时间
2006-10-8
个人空间
发短消息
加为好友
当前在线
6
#
大
中
小
发表于 2007-11-23 03:02
只看该作者
说通俗一点 this就是本类当前的对象
比如说下面这个例子
class Program
{
public void display()
{
Console.WriteLine("Hello World");
}
public void show()
{
this.display();
}
static void Main(string[] args)
{
Program p = new Program();
p.show();
}
}
通常我们调用类的方法需要创建该类对象(Program p = new Program())
然后用"对象.方法"(p.show())来调用,但是show方法里面用this又调用了它的display方法,同样输出了"Hello World",其实这个程序并不能很好体现this的用途,不过有些时候比如说现在有个WinForms程序,你要在Form1的某个事件中弹出Form2,并在Form2中能操作当前Form1中public的方法,这时你再new Form1把它传递到Form2就不行了,往往这个时候就可以用this代替
愛生活 && 愛編程
UID
97485
积分
39501
阅读权限
100
在线时间
232 小时
最后登录
2008-7-25
查看个人网站
查看详细资料
TOP
philmei
新手上路
帖子
19
精华
0
性别
男
注册时间
2007-11-20
个人空间
发短消息
加为好友
当前离线
7
#
大
中
小
发表于 2007-11-24 13:22
只看该作者
谢谢,谢谢。
this的这个用法我是知道的,书中说了这个用法,我看懂了的。书中提到了关于this的其它用法,其中说的,当this作为参数传给另一个方法我没看懂,呵呵
非常感谢您的帮助,您的例子很清楚,再次谢谢您了。
扫地恐伤蝼蚁命,爱惜飞蛾纱罩灯
UID
219293
积分
209
阅读权限
10
在线时间
3 小时
最后登录
2007-11-26
查看详细资料
TOP
guoxhvip
版主
帖子
3591
精华
0
性别
男
来自
聖西羅南看臺
注册时间
2006-10-8
个人空间
发短消息
加为好友
当前在线
8
#
大
中
小
发表于 2007-11-24 21:48
只看该作者
当this作为参数传给另一个方法这个问题其实就是上面我说的你要在Form1的某个事件中弹出Form2,并在Form2中能操作当前Form1中public的方法就需要 具体做法
Form1中:
Form2 f2 = new Form2(this);
f2.Show();
Form2 中:
定义成员变量Form1 f1 = null;
构造方法public Form2(Form1 f1) {this.f1 = f1}
这时你的f1就可以调用Form1中public的方法或者属性了
愛生活 && 愛編程
UID
97485
积分
39501
阅读权限
100
在线时间
232 小时
最后登录
2008-7-25
查看个人网站
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
控制面板首页
编辑个人资料
积分记录
公众用户组