<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: 【***.f1(this)】<BR>所以我想削掉这个参数.</P>
2 回答
![?](http://img1.sycdn.imooc.com/5458622b000117dd02200220-100-100.jpg)
不负相思意
TA贡献1777条经验 获得超10个赞
问题起因: 我的一个方法f1,所有调用时候参数都是this: 【***.f1(this)】 所以我想削掉这个参数. 传进来一个this参数有什么不好呢?感觉没啥问题,很明确,也没有效率问题,传进来的就是父对象的引用而已。
![?](http://img1.sycdn.imooc.com/54584c9c0001489602200220-100-100.jpg)
慕的地8271018
TA贡献1796条经验 获得超4个赞
似乎就在博问之前有人问过 通过取得调用堆栈来判定 但是这并不是值得提倡的做法(不高效,不够OO,不够优雅) 看你的情形,似乎C对应于A/B存在一种父子关系,或者被包含关系 那么应该在C的实例中建立对A/B的引用,在f1执行时,直接使用C里面的引用即可
- 2 回答
- 0 关注
- 550 浏览
添加回答
举报
0/150
提交
取消