获取调用者问题

<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>

暮色呼如
浏览 551回答 2
2回答

不负相思意

问题起因: 我的一个方法f1,所有调用时候参数都是this: 【***.f1(this)】 所以我想削掉这个参数. 传进来一个this参数有什么不好呢?感觉没啥问题,很明确,也没有效率问题,传进来的就是父对象的引用而已。

慕的地8271018

似乎就在博问之前有人问过 通过取得调用堆栈来判定 但是这并不是值得提倡的做法(不高效,不够OO,不够优雅) 看你的情形,似乎C对应于A/B存在一种父子关系,或者被包含关系 那么应该在C的实例中建立对A/B的引用,在f1执行时,直接使用C里面的引用即可
打开App,查看更多内容
随时随地看视频慕课网APP