<P>問題描述:<BR>①類A有一實例a1<BR>②類B有一實例b1<BR>③類C有一public方法f1<BR>④a1和b1分別有一個類C的實例ac和bc<BR>⑤ac和bc分別調(diào)用了f1<BR><BR>問題:<BR>f1方法內(nèi)在不通過參數(shù)傳遞的方式,能否知道是a1在調(diào)用f1還是b1在調(diào)用f1?<BR>換句話說:f1如何獲得調(diào)用它的實例?</P> <P>補充:<BR>據(jù)小道消息說System.Diagnostics可能可以解決這個問題.</P> <P>問題起因:<BR>我的一個方法f1,所有調(diào)用時候參數(shù)都是this: 【***.f1(this)】<BR>所以我想削掉這個參數(shù).</P>
2 回答

不負相思意
TA貢獻1777條經(jīng)驗 獲得超10個贊
問題起因: 我的一個方法f1,所有調(diào)用時候參數(shù)都是this: 【***.f1(this)】 所以我想削掉這個參數(shù). 傳進來一個this參數(shù)有什么不好呢?感覺沒啥問題,很明確,也沒有效率問題,傳進來的就是父對象的引用而已。

慕的地8271018
TA貢獻1796條經(jīng)驗 獲得超4個贊
似乎就在博問之前有人問過 通過取得調(diào)用堆棧來判定 但是這并不是值得提倡的做法(不高效,不夠OO,不夠優(yōu)雅) 看你的情形,似乎C對應于A/B存在一種父子關(guān)系,或者被包含關(guān)系 那么應該在C的實例中建立對A/B的引用,在f1執(zhí)行時,直接使用C里面的引用即可
- 2 回答
- 0 關(guān)注
- 568 瀏覽
添加回答
舉報
0/150
提交
取消