社区
C#
帖子详情
C#中如何获取所有引用某object的其他所有object?
天堂里的死神
2009-09-02 08:37:09
遇到一个需求,把一堆物体存到包里,然后要删除某个包里的某个物体A,这时,需要这个物体确实的被删除了。
但是包的物体与包的物体之间是可以互相引用的,.NET的机制导致这个A实际上无法被删除,因为还会有别的包里的物体引用它。
所以想问一下,是否能有这样的方式,可以得知究竟有谁引用了这个物体A呢?
...全文
334
14
打赏
收藏
C#中如何获取所有引用某object的其他所有object?
遇到一个需求,把一堆物体存到包里,然后要删除某个包里的某个物体A,这时,需要这个物体确实的被删除了。 但是包的物体与包的物体之间是可以互相引用的,.NET的机制导致这个A实际上无法被删除,因为还会有别的包里的物体引用它。 所以想问一下,是否能有这样的方式,可以得知究竟有谁引用了这个物体A呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
微创社(MCC)
2009-09-06
打赏
举报
回复
关注一下,遇到了相同的问题.
参考一个源代:
http://www.google.cn/codesearch/p?hl=zh-CN&sa=N&cd=1&ct=rc#pr6TPJlvJvw/base/Imported/Bartok/runtime/shared/System/MultiUseWord.cs&q=MultiUseWord%20lang:c%23
天堂里的死神
2009-09-05
打赏
举报
回复
已经用包装类的方法解决,就此结贴,感谢众位的回复。 ^_^
robin521
2009-09-02
打赏
举报
回复
借用包装类的思想,我也小发表一下我的观点,
1.你可以使用构造函数,重载各种不同类对它的操作,这样,这个包装类被操作就会激活相应方法
2.重载的方式可以使用委托,这样可以传入操作方式,从而辨别是哪一种操作,或是谁操作
天堂里的死神
2009-09-02
打赏
举报
回复
多谢各位回复,我其实也正在考虑包装类的思路。
其实这个是我在做的一个外包需要用到的功能,这周末就要有个版本,时间比较紧,所以想如果.NET GC有类似的方法就好了,我就可以省点事情。看来又得熬通宵了,5555。。。
我先按包装类来写吧,谢谢findcaiyzh、robin521的提醒 ^_^,谢谢大家的回复。
过两天再来结贴。
另外,今天看了看文档,发现有个WeakReference,不知道有人研究过这个类么?是否是一种.NET自己的“包装”思路?
^_^ 谢谢大家。
TTOJJ
2009-09-02
打赏
举报
回复
不知道樓主是否瞭解c++,其中有個智能指針,可以借鑒~~
Rain02113204
2009-09-02
打赏
举报
回复
4楼的方法应该可行
宝_爸
2009-09-02
打赏
举报
回复
包装类,你可以使用Template Class,会通用一点。
宝_爸
2009-09-02
打赏
举报
回复
开始感觉有点不可能。
后来想到种 方法,你看看行不行。
为物体 创建一个包装类
这个包装类处理所有对物体的操作,这样外面只要持有或则个包装类的引用,而这个包装类持有对物体的引用。
当你包装类提供Delete这样的函数,用于清除对物体的引用,并调用物体的Dispose函数来做真正的清除。
清除后,包装类的其他函数则返回错误。
guyehanxinlei
2009-09-02
打赏
举报
回复
还真没有想过这个问题,估计GC或许是知道的,关注一下...
Dobzhansky
2009-09-02
打赏
举报
回复
这个问题很好
lijunfeng
2009-09-02
打赏
举报
回复
你可以为物体建立一个事件,在其他物体引用它的同时把一个删除引用方法加入到这个事件中,在删除这个物体时就激发事件让所有引用它的物体全部删除引用。
SlaughtChen
2009-09-02
打赏
举报
回复
不清楚,关注一下
lovelan1748
2009-09-02
打赏
举报
回复
using System.Reflection
用反射判断它的父类型,不是很清楚
angel6709
2009-09-02
打赏
举报
回复
没有吧、、、不知道。
C#
中
获取
Object
对象里的值
之前百度了大半天,网上的都是说另一种方法,但是我CV进去不可行,最后用下面这种方法实现了 例: 取
Object
对象obj
中
的“Name”对应的值 string name = obj.GetType().GetProperty("Name").GetValue(obj, null).ToString(); 简洁明了! ...
C#
的
Object
类
在
C#
中
,有一个特殊的类型
Object
类。这个类是
C#
中
所有其它类的超类。我们知道,
C#
只允许单继承,也即每一个类都可以有唯一的一个超类。本章我们重新定义:所有的
C#
类有且只有一个超类。如果一个类没有显式指定,则
C#
以
Object
类作为其超类。所以所有的类都会直接或者间接的继承
Object
类。定义
Object
类的作用:1、向所有的类引入一些关键方法;2、可以让任意类的对象都
引用
到Objec
C#
中
object
类型
是个对象类型
Object
数据类型 保存
引用
对象的 32 位(4 字节)地址。可以为
Object
的变量分配任何
引用
类型(字符串、数组、类或接口)。
Object
变量还可以
引用
任何值类型(数值、Boolean、Char、Date、结构或枚举)的数据。
Object
数据类型可以指向任意数据类型的数据,包括您的应用程序识别的任意对象实例。当您在编译时不知道变量可能指向哪种数据类型时,请使用 Ob...
关于
C#
获取
object
对象的值,
object
对象转json
问题:在一个DataTable
中
增加了一列,要将一个
object
对象
中
的一部分数据写入到每行对应的这一列; 解决:
获取
到的第一个
object
以后,通过GetPropertyValue()这个方法取到我要显示的对象,但此时返回的也是一个
object
对象,先把这个
object
对象转为json数组字符串,然后通过Deserialize
Object
这个方法将它序列化为json数组,就可以通过forEach来取值了 参考:https://blog.csdn.net/chenjiazhu/article/det..
Object
类;
c#
Object
类型是
c#
中
所有数据类型的基类 也就是说 任何“值类型”的值都可以转换为
object
类型的值,
object
类型的值也可以转换为任何类型的数据 相当于一个装箱和拆箱的过程 任何类型的数据最终都可以作为对象(
object
)处理 装箱: eg:将一个值类型变量隐式地转换为
引用
类型的对象 int val = 2000;
object
obj = val;//把值类型转换为
引用
类型,隐式转换 将值类型转换为
object
类型后改变值类型数据并不对
Object
类型数据造成影响和改变 Ob.
C#
110,545
社区成员
642,580
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章