Wie wird diese Singleton-Klasse in C # verwendet?

8

Ich habe Probleme mit Singleton Design Pattern. Ich versuche, es in dieser einfachen Konsolenanwendung zu verwenden. Ich habe ein Problem damit in der Main-Methode in der Programmklasse. Ich möchte ein Objekt aus der Singleton-Klasse definieren wie: var data = Singleton.Instance; , aber ich weiß nicht, warum ich das nicht kann Außerdem weiß ich nicht, warum ich die folgende Fehlermeldung bekomme, wenn ich das Programm starte:

%Vor%

So, wie Sie das beheben können?
Singleton-Klasse:

%Vor%

Programmklasse:

%Vor%

UPDATE:

Jungs, ich schätze eure Hilfe bisher sehr. Das Programm funktioniert jetzt, aber die Logik funktioniert nicht. Wenn Sie sich das Hauptprogramm ansehen, werden Sie sehen, dass die Liste nur "Hallo Welt !!!" hat. Wenn ich jedoch die HasMessage-Methode verwendet, funktioniert nicht. Weil das Programm "Es gibt eine Übereinstimmung" anzeigt. Aber es sollte mir "NO STRING !!!" da gibt es keine Übereinstimmung. Wie kann ich das beheben?

    
Technology Lover 15.01.2013, 04:33
quelle

5 Antworten

12

Ihr Feld Messages ist zu nichts initialisiert. Deshalb erhalten Sie die Ausnahme. In Ihrer Klasse tun Sie:

%Vor%

Sie können sich auch die Implementierung von Thread Safe Singleton von Jon Skeet ansehen

BEARBEITEN:

Basierend auf der aktualisierten Frage. Ihr Scheck und Ihre Nachricht sind entgegengesetzt. Es sollte sein:

%Vor%

Ihre Methode HasMessage gibt true zurück, wenn der übergebene Parameter in der Liste vorhanden ist und andernfalls false.

    
Habib 15.01.2013, 04:36
quelle
4

Es sieht so aus, als wärst du fast da. Überlege, deinen Code wie folgt neu zu schreiben:

%Vor%

Auf dieser Website finden Sie einige hilfreiche C # -Tutorials für Designmuster.

    
jake 15.01.2013 05:04
quelle
4
  

Allerdings, wenn ich die HasMessage-Methode verwendet, funktioniert nicht. Weil das Programm "Es gibt eine Übereinstimmung" anzeigt. Aber es sollte mir "NO STRING !!!" da gibt es keine Übereinstimmung. Wie kann ich das beheben?

Das sollte wirklich eine separate Frage sein, aber ich werde es trotzdem beantworten. Du hast deinen Zustand zurück. Ihr Code sagt "no string", wenn die Instanz die Nachricht "12" enthält, und "Es gibt eine Übereinstimmung", wenn nicht ist. Versuchen Sie Folgendes:

%Vor%     
phoog 15.01.2013 05:51
quelle
1
%Vor%

Hier ist dein Problem. Das Mitglied wurde niemals in Ihrem Code installiert. Sie könnten wie folgt vorgehen:

%Vor%

Ich empfehle Ihnen auch, die richtigen Namenskonventionen für Ihre lokalen Variablen und Mitglieder zu verwenden. Ändern Sie instance in m_Instance und Messages in m_Messages . Versuchen Sie auch, Singletons thread-sicher zu implementieren ... für weitere Informationen schauen Sie sich diese Seite an.

    
Tommaso Belluzzo 15.01.2013 04:40
quelle
0

Das ist die Implementierung von Singleton:

%Vor%

Wie kann ich eine Instanz aufrufen und erstellen?

%Vor%     
jasmintmp 15.11.2016 13:34
quelle

Tags und Links