说我有下面的类...如果引用的对象被删除,引用变量会发生什么?
Class1
{
private ArrayList myList;
private Class1
{
// Here fill myList with a bunch of Foo objects.
}
public ArrayList GetList()
{
return myList;
}
}
你有下面的代码一些其他类的然后说...
Class1 myClass = new Class1();
Foo myFavoriteFoo = myClass.GetList()[0] As Foo;
现在,myFavoriteFoo实际上是对富的引用存在于Class1中的数组列表中。如果Class1内的某些内容从类中删除特定的Foo或将其丢弃,会发生什么? myFavoriteFoo立即= null?我猜如果我试图访问Foo.SomeMethod()我只会得到一个异常,如“对象引用未设置为对象的实例”...
实际上,如果为非托管资源正确实施,那么垃圾收集器会在不再使用该对象时自动释放分配给托管对象的内存。http://msdn.microsoft.com/zh-cn/library/ system.idisposable.aspx。需要注意的是可以实现'IDisposable',但实际上可能不会使用非托管资源。 – TheCloudlessSky 2010-08-12 12:02:46
@TheCloud:GC自动发布_all_托管对象,与非托管资源无关。 – 2010-08-12 12:23:04