gpt4 book ai didi

C# 处理 : when dispose and who dispose it

转载 作者:行者123 更新时间:2023-11-30 19:11:40 25 4
gpt4 key购买 nike

我在 dispose 和 finalize 之间犹豫不决。这是我的示例代码:

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{} 后自动处理对象,所以我认为在“After dispose”行。 anotherCar.name 必须为 NULL。为什么它仍然是“我的车”?

我的另一个问题是:我的书说你不应该出于某种原因使用 GC.Collect(),其中之一就是性能。那么,谁处置对象?如果那也是垃圾收集器,那么我认为 dipose()finalizer()

有相同的性能问题

谢谢:)

最佳答案

我认为您误解了 Dispose 的实际作用。它不会破坏您的对象、将任何内容设置为 null 或以其他方式执行任何类型的魔法。当您使用 using 语句时,这只是保证将调用 Dispose。您在 Dispose 方法中所做的决定了对象的行为。不是语言或 .NET 框架。

关于C# 处理 : when dispose and who dispose it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com