我在处理和完成之间变得紧张。这是我的示例代码:
public class Car:IDisposable
{
public string name;
public Car()
{
name = "My Car";
}
public void Dispose()
{
Console.WriteLine("This object has been disposed");
}
}
public static void Main()
{
Car anotherCar;
using (var car = new Car())
{
anotherCar = car;
Console.WriteLine("Before dispose. Name is: "+anotherCar.name);
}
Console.WriteLine("After dispose. Name is: "+anotherCar.name);
}
结果是:
Before dispose. Name is My Car
This object has been disposed
After dispose. Name is My Car
我的问题是:因为 C# 会在 之后自动处理对象using{}
,所以我认为在“处理后”行。anotherCar.name
必须为 NULL。为什么它仍然是“我的车”?
我的另一个问题是:我的书说你不应该GC.Collect()
出于某种原因使用,其中之一就是性能。那么,谁处置对象?如果那也是垃圾收集器,那么我认为dipose()
也有相同的性能问题finalizer()
谢谢 :)