为了账号安全,请及时绑定邮箱和手机立即绑定

获取调用者问题

获取调用者问题

C#
暮色呼如 2018-12-16 20:09:46
<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>
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

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

查看完整回答
反对 回复 2018-12-20
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

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

查看完整回答
反对 回复 2018-12-20
  • 2 回答
  • 0 关注
  • 550 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信