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{}
ため、「破棄後」の行で考えます。anotherCar.name
NULL でなければなりません。なぜまだ「マイカー」なのですか?
もう 1 つの質問は、私の本にはGC.Collect()
、何らかの理由で使用すべきではないと書かれていますが、そのうちの 1 つはパフォーマンスです。では、誰が object を処分するのでしょうか? dipose()
それがガベージコレクターの場合も、同じパフォーマンスの問題があると思いますfinalizer()
ありがとう :)