Object.Finalize Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir nesnenin, atık toplama tarafından geri kazanılmadan önce kaynakları boşaltmaya ve diğer temizleme işlemlerini gerçekleştirmeye çalışmasına izin verir.
!Object ()
~Object ();
abstract member Finalize : unit -> unit
override this.Finalize : unit -> unit
Finalize ()
Örnekler
Aşağıdaki örnek, geçersiz kılan bir nesne yok edildiğinde yönteminin çağrıldığını doğrular FinalizeFinalize . Bir üretim uygulamasında yönteminin Finalize nesne tarafından tutulan yönetilmeyen kaynakları serbest bırakmak için geçersiz kılınacağını unutmayın. Ayrıca, C# örneğinin yöntemini geçersiz kılma yerine bir yıkıcı sağladığını Finalize unutmayın.
using System;
using System.Diagnostics;
public class ExampleClass
{
Stopwatch sw;
public ExampleClass()
{
sw = Stopwatch.StartNew();
Console.WriteLine("Instantiated object");
}
public void ShowDuration()
{
Console.WriteLine("This instance of {0} has been in existence for {1}",
this, sw.Elapsed);
}
~ExampleClass()
{
Console.WriteLine("Finalizing object");
sw.Stop();
Console.WriteLine("This instance of {0} has been in existence for {1}",
this, sw.Elapsed);
}
}
public class Demo
{
public static void Main()
{
ExampleClass ex = new ExampleClass();
ex.ShowDuration();
}
}
// The example displays output like the following:
// Instantiated object
// This instance of ExampleClass has been in existence for 00:00:00.0011060
// Finalizing object
// This instance of ExampleClass has been in existence for 00:00:00.0036294
open System.Diagnostics
type ExampleClass() =
let sw = Stopwatch.StartNew()
do
printfn "Instantiated object"
member this.ShowDuration() =
printfn $"This instance of {this} has been in existence for {sw.Elapsed}"
override this.Finalize() =
printfn "Finalizing object"
sw.Stop()
printfn $"This instance of {this} has been in existence for {sw.Elapsed}"
let ex = ExampleClass()
ex.ShowDuration()
// The example displays output like the following:
// Instantiated object
// This instance of ExampleClass has been in existence for 00:00:00.0011060
// Finalizing object
// This instance of ExampleClass has been in existence for 00:00:00.0036294
Imports System.Diagnostics
Public Class ExampleClass
Dim sw As StopWatch
Public Sub New()
sw = Stopwatch.StartNew()
Console.WriteLine("Instantiated object")
End Sub
Public Sub ShowDuration()
Console.WriteLine("This instance of {0} has been in existence for {1}",
Me, sw.Elapsed)
End Sub
Protected Overrides Sub Finalize()
Console.WriteLine("Finalizing object")
sw.Stop()
Console.WriteLine("This instance of {0} has been in existence for {1}",
Me, sw.Elapsed)
End Sub
End Class
Module Demo
Public Sub Main()
Dim ex As New ExampleClass()
ex.ShowDuration()
End Sub
End Module
' The example displays output like the following:
' Instantiated object
' This instance of ExampleClass has been in existence for 00:00:00.0011060
' Finalizing object
' This instance of ExampleClass has been in existence for 00:00:00.0036294
yöntemini geçersiz kılan Finalize ek bir örnek için yöntemine GC.SuppressFinalize bakın.
Açıklamalar
Bu API hakkında daha fazla bilgi için bkz. Object.Finalize için ek API açıklamaları.