作者erspicu (.)
看板C_Sharp
標題Re: [問題] 有方法取得正被引用的次數?
時間Thu Apr 13 15:40:59 2017
※ 引述《lovecold (小豬頭)》之銘言:
: 大家好,想請教一下,我有一個class A,
: a = new A(), b = a, c = a,.....
: 想請問一下,有辦法知道 new A() 被幾個引用嗎?
有一個方法 但不知道是不是你需要的
再案照你自己的需求去改
簡單的概念就是多加一層static wapper class
利用getter這裡來做ref count
class ClassA
{
public int value_item = 0;
}
static public class objectGetWraper
{
static public object _Aclass;
static public object _A
{
get
{
count++;
return _Aclass;
}
set
{
_Aclass = value;
}
}
static public int count = 0;
}
private void button5_Click(object sender, EventArgs e)
{
ClassA a_object = new ClassA();
objectGetWraper._A = a_object;
ClassA bb = (ClassA)objectGetWraper._A;
ClassA cc = (ClassA)objectGetWraper._A;
ClassA dd = (ClassA)objectGetWraper._A;
MessageBox.Show(objectGetWraper.count.ToString());
//3
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.56.185
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1492069263.A.564.html
※ 編輯: erspicu (60.248.56.185), 04/13/2017 15:42:00
→ ssccg: 用wrapper沒辦法控制拿出去之後又隨便亂給吧 04/13 15:51
→ ssccg: 要規定寫程式的人用固定方式取,跟規定要去呼叫一個counter 04/13 15:54
→ ssccg: 計數一樣,自己算的作法除非使用範圍很小不然無法維護吧 04/13 15:55
→ erspicu: setter跟getter都可以各自有些資源管理與計算機制 04/13 16:53
→ erspicu: 雖然不知道原PO的目的為何..但如果真要如此 04/13 16:53
→ erspicu: 這似乎是目前可以想到最簡單的解法 04/13 16:53
→ erspicu: 還是要看原PO到底是要做啥... 04/13 16:55
推 s4300026: 我猜是因為自己寫的程式指來指去,然後不知道哪些指標 04/13 18:59
→ s4300026: 還指著,造成無法gc 04/13 18:59
→ ssccg: 自己的程式怎麼會不知道哪些還指著..沒改掉不就永遠指著嗎? 04/14 19:42
→ ssccg: GC並不需要全部沒有還指著,一堆沒用到的物件互相指來指去 04/14 19:44
→ ssccg: 也沒差,只要執行中的物件無法到達就可gc 04/14 19:44
→ Litfal: 搞到沒辦法gc,那程式的耦合度應該也夠噁心的了... 04/14 21:33
感覺上原PO應該是臨時想到好奇一問 應該不是真的有這功能的需要
不然也不知道能夠作啥....
※ 編輯: erspicu (61.70.88.120), 04/14/2017 22:10:48