2009-04-27 10 views
4

Ich bin ein C/C++ - Programmierer, der vor kurzem in C# arbeitet, und ich versuche, einige ausgefallene Initialisierung Sachen, mit denen ich in Schwierigkeiten geraten habe.C# Instanziieren/Initialisieren Objekt beim Programmstart

Das beste und einfachste Beispiel, das ich finden könnte, wäre, dass ich einen "eifrigen" Singleton erstellen möchte - einen, der sofort beim Programmstart erstellt wird, aber ohne dass ich in die Hauptfunktion des Programms und gehen muss Sag "Singleton.Instance()" als erstes. Ich lese statische Instanziierung, und es sieht so aus, als ob es aufgerufen oder erstellt werden muss, bevor ein statisches Objekt instanziiert wird, also habe ich versucht, eine statische Variable zu erstellen, die das Objekt instanziiert, aber das hat nicht funktioniert. (Ich konnte keine Dokumentation darüber finden, wann statische Variablen instanziiert/initialisiert werden).

Irgendwelche Zeiger?

Danke!

Edit: nach einigen weiteren Studien, ich glaube, ich erreichen kann, was ich suche mit einem einzigen Code-Block unter Verwendung von Reflexion

+0

Denkanstöße zu den Gefahren von Singletons http://www.youtube.com/watch?v=-FRm3VPhseI –

+2

Möchten Sie die Ergebnisse Ihrer zusätzlichen Forschung bitte teilen? – bboyle1234

+0

Siehe Jon Skeets Artikel zur Implementierung von Singletons in C# - [http://www.yoda.arachsys.com/csharp/singleton.html] (http://www.yoda.arachsys.com/csharp/singleton.html) – abhilash

Antwort

2

Ein statischer Konstruktor nur aufgerufen, wenn Sie zum ersten Mal auf die Klasse verweisen, die enthalten Konstrukteur. Wenn Sie möchten, dass Ihr Initialisierungscode beim Programmstart ausgeführt wird, müssen Sie explizit auf die Klasse verweisen, die den Konstruktor in Ihrem Startcode enthält (z. B. die Methode Main).

Verwandte Themen