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:
So, wie Sie das beheben können?
Singleton-Klasse:
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?
Ihr Feld Messages
ist zu nichts initialisiert. Deshalb erhalten Sie die Ausnahme. In Ihrer Klasse tun Sie:
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.
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%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.
Tags und Links c# design-patterns