1 回答

TA贡献1946条经验 获得超4个赞
通过这个例子,我们可以说 GC 对对象的任何属性实例都是独立工作的。
using System;
public class Dog
{
public Dog(string name)
{
this.Name = name;
}
public string Name;
public Breed Breed;
}
public class Breed
{
public Breed(string name)
{
Name = name;
}
public string Name;
}
public class Program
{
public static void Main()
{
Dog dog = new Dog("Bowser");
dog.Breed = new Breed("Pug");
WeakReference dogRef = new WeakReference(dog);
WeakReference breedRef = new WeakReference(dog.Breed);
Console.WriteLine(dogRef.IsAlive);
Console.WriteLine(breedRef.IsAlive);
dog.Breed = null;
GC.Collect();
Console.WriteLine(breedRef.IsAlive);
dog = null;
GC.Collect();
Console.WriteLine(dogRef.IsAlive);
}
}
输出:
true
true
false
false
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报