首页 新闻 会员 周边

获取调用者问题

0
悬赏园豆:10 [已解决问题] 解决于 2007-12-20 17:41
<P>问题描述:<BR>①类A有一实例a1<BR>②类B有一实例b1<BR>③类C有一public方法f1<BR>④a1和b1分别有一个类C的实例ac和bc<BR>⑤ac和bc分别调用了f1<BR><BR>问题:<BR>f1方法内在不通过参数传递的方式,能否知道是a1在调用f1还是b1在调用f1?<BR>换句话说:f1如何获得调用它的实例?</P> <P>补充:<BR>据小道消息说System.Diagnostics可能可以解决这个问题.</P> <P>问题起因:<BR>我的一个方法f1,所有调用时候参数都是this:&nbsp; 【***.f1(this)】<BR>所以我想削掉这个参数.</P>
斧头帮少帮主的主页 斧头帮少帮主 | 菜鸟二级 | 园豆:220
提问于:2007-12-17 17:28
< >
分享
最佳答案
0
问题起因: 我的一个方法f1,所有调用时候参数都是this: 【***.f1(this)】 所以我想削掉这个参数. 传进来一个this参数有什么不好呢?感觉没啥问题,很明确,也没有效率问题,传进来的就是父对象的引用而已。
Justin | 小虾三级 |园豆:980 | 2007-12-17 23:39
其他回答(3)
0
似乎就在博问之前有人问过 通过取得调用堆栈来判定 但是这并不是值得提倡的做法(不高效,不够OO,不够优雅) 看你的情形,似乎C对应于A/B存在一种父子关系,或者被包含关系 那么应该在C的实例中建立对A/B的引用,在f1执行时,直接使用C里面的引用即可
Klesh Wong | 园豆:780 (小虾三级) | 2007-12-17 22:50
0
你的f1方法是一个静态方法? 否则按我的知识理解应该是: ac.f1(); bc.f1(); 而不需要传入this,什么的~
阿不 | 园豆:665 (小虾三级) | 2007-12-18 13:26
0
如果你是在应用开发实际项目,你的方法已经不错了,我现在就有时候传参数为this,正如网友Justin所说,没有什么不好的,清晰明朗,而且也没有什么效率或其他麻烦产生。 如果你只是希望研究新的技术,那么最好还是从基本看起,这样可能更便于你理解!
刚刚 | 园豆:3151 (老鸟四级) | 2007-12-20 02:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册