Wieviele Instansen gibt es?

FlashMX

Mitglied
Hallo,


ich suche nach einem Weg herauszubekommen wie viel Instansen von einer Class existieren. Vieleicht kann mir jemand helfen?!

MFG
 
Da gibt es genau eine Möglichkeit: Zähl sie!
Bei jedem Konstruktoraufruf inkrementierst du eine statische (shared) Variable:
Code:
Public Class MeineKlasse

	Private Shared mInstances as Integer = 0

	Public Sub New()
		mInstances += 1
	End Sub

	Public Shared Readonly Property Instances as Integer
		Get
			Return mInstances
		End Get
	End Property

End Class

Da hast du aber ein Problem: Du weisst nicht, wann ein Objekt<=>Instanz entfernt wird und es gibt, glaube ich, auch keine Möglichkeit, dies mit Sicherheit zu bestimmen. (Man korrigiere mich bitte, falls ich falsch liege). Der Grund dafür ist der Garbage Collector des .NET Frameworks. Er räumt in regelmässigen Abständen alle Objekte weg, auf die keine Referenzen mehr bestehen.
 
Sunray hat gesagt.:
Da hast du aber ein Problem: Du weisst nicht, wann ein Objekt<=>Instanz entfernt wird und es gibt, glaube ich, auch keine Möglichkeit, dies mit Sicherheit zu bestimmen. (Man korrigiere mich bitte, falls ich falsch liege). Der Grund dafür ist der Garbage Collector des .NET Frameworks. Er räumt in regelmässigen Abständen alle Objekte weg, auf die keine Referenzen mehr bestehen.

Du kannst einen Finalizer bzw. Destruktor dafür verwenden.
Dieser wird genauso wie der Konstruktor einer Klasse deklariert nur mit einem "~" davor.
Dieser wird immer aufgerufen, wenn eine Instanz (auch durch den GC) entfernt wird.

//EDIT: Tut mir Leid, ich war mal wieder bei C# :)
In VB.NET deklarierst du so einen Finalizer:

Code:
Protected Overrides Sub Finalize()
 '...
End sub
 
Zuletzt bearbeitet:
Dann hab ich jetzt noch eine Frage: Wozu wird denn eigentlich noch das IDispose Interface benötigt, wenn man Freigaben ja auch über Finalize() durchführen kann?
 
Hi.

finalizer
- implizite freigabe von Ressourcen
- wird (asynchron) vom GC aufgerufen, wenn überhaupt
- unbestimmt wann genau aufgerufen wird

Dispose
- explizite freigabe von Ressourcen
- der Entwickler bestimmt wann die verwalteten und unverwalteten Ressourcen freigegeben werden


MfG,
Alex
 
Danke für die antworten, aber ich meinte das so, das ich sozusagen die instansen durchlaufen kann und jede auf einen bestimmten wert prüfen kann.
 
Naja, du könntest in der Klasse eine statische (shared) Collection, zb eine ArrayList anlegen und im Konstruktor der Klasse dann die Instanz der ArrayList hinzufügen.
 

Neue Beiträge

Zurück