作者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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1492069263.A.564.html
※ 编辑: erspicu (60.248.56.185), 04/13/2017 15:42:00
1F:→ ssccg: 用wrapper没办法控制拿出去之後又随便乱给吧 04/13 15:51
2F:→ ssccg: 要规定写程式的人用固定方式取,跟规定要去呼叫一个counter 04/13 15:54
3F:→ ssccg: 计数一样,自己算的作法除非使用范围很小不然无法维护吧 04/13 15:55
4F:→ erspicu: setter跟getter都可以各自有些资源管理与计算机制 04/13 16:53
5F:→ erspicu: 虽然不知道原PO的目的为何..但如果真要如此 04/13 16:53
6F:→ erspicu: 这似乎是目前可以想到最简单的解法 04/13 16:53
7F:→ erspicu: 还是要看原PO到底是要做啥... 04/13 16:55
8F:推 s4300026: 我猜是因为自己写的程式指来指去,然後不知道哪些指标 04/13 18:59
9F:→ s4300026: 还指着,造成无法gc 04/13 18:59
10F:→ ssccg: 自己的程式怎麽会不知道哪些还指着..没改掉不就永远指着吗? 04/14 19:42
11F:→ ssccg: GC并不需要全部没有还指着,一堆没用到的物件互相指来指去 04/14 19:44
12F:→ ssccg: 也没差,只要执行中的物件无法到达就可gc 04/14 19:44
13F:→ Litfal: 搞到没办法gc,那程式的耦合度应该也够恶心的了... 04/14 21:33
感觉上原PO应该是临时想到好奇一问 应该不是真的有这功能的需要
不然也不知道能够作啥....
※ 编辑: erspicu (61.70.88.120), 04/14/2017 22:10:48