如果有多个变量指向同一个地址,怎用通过其中某一个变量删除该地址的数据,
思路1:
  找到一个方法,可以返回所有引用该地址的变量,然后都设为null
思路2:
  找到一个方法,直接把对应的地址清除
例子:
  有个一类 A;
然后:
 A a1=new A();
A a2=a1;
A a3=a1;
A x1=a1;
...(后来有很多变量对指向同一个地址)
怎样对 a3操作,可使得所有引用同一对象的变量都 变为null
 

解决方案 »

  1.   

    托管的资源删不掉非托管的资源 dispose 就是
      

  2.   

    A a1=new A();
    A a2=a1;
    A a3=a1; a1 = null / a2 = null / a3 = null应该都可以将这三个字设置成null的。
      

  3.   

    网上有篇帖子说:类里面设置一个变量,如 private bool isRemoved;
    这样就可以通过某个变量标记该地址已经不想利用了,在适当的时候这些个变量通过判断该值,来自己null
    谁有更好的方法呢?
      

  4.   

    Form对象被运行close()后,引用他的变量。人家咋实现的呢?
      

  5.   

    你大概被 c/c++ 洗脑了。不要把 c# 看作 c++ 就不会有类似关于“对象的地址”的荒谬概念,也就不会有这类问题。
      

  6.   

    在 .net 的通用的 CLR 定义中,只有关于对象的引用变量、以及HashCode代码的定义和描述,至于它是怎样实现的,是不是所谓指针、地址以及某一个 .net 版本或者同一版本在不同类型机器上的编译结果是如何来实现的,则是不确定的,跟 .net 程序的设计思路是无关的。
      

  7.   

    Form对象的Close()方法其实还是调用了dispose()方法来释放的非托管资源,而这个对象本身还是存在的

    Form a = new Form();
    a.dispose();
    if(a==null)Console.WriteLine("a is not null");
    可以自己测试一下
      

  8.   


     不知道楼主要这样做干什么找到当前AppDomain下的所有实例,并且和a3进行ReferenceEquals()的比较,如果引用一样,那么手动置NULL。