シングルトンデザインパターンの使用に苦労しています。この単純なコンソールアプリケーションで使用しようとしています。ProgramクラスのMainメソッドに問題があります。次のようなシングルトンクラスからオブジェクトを定義したいのですが、var data = Singleton.Instance;
なぜそれができないのかわかりません。また、プログラムを実行したときに次のエラーメッセージが表示される理由もわかりません。
Unhandled Exception: System.NullRefernceException: Object reference not
set to an instance of an object.
では、それを修正する方法は?
シングルトンクラス:
namespace Singleton
{
class Singleton
{
//Variable
private static Singleton instance;
private List<string> Messages;
//Constructor
private Singleton() { }
//Property
public static Singleton Instance
{
get
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
//Methods
public void Message(string message)
{
Messages.Add(message);
}
public bool HasMessage(string message)
{
return Messages.Contains(message);
}
}
}
プログラムクラス:
namespace Singleton
{
class Program
{
static void Main(string[] args)
{
var data = Singleton.Instance;
Singleton.Instance.Message("Hello World!!!");
if(Singleton.Instance.HasMessage("12"))
Console.WriteLine("NO STRING!!!");
else
Console.WriteLine("There is a match");
}
}
}
アップデート:
皆さん、これまでのご協力に心から感謝いたします。プログラムは現在機能していますが、ロジックは機能していません。メインプログラムを見ると、リストには「HelloWorld!!!」しか含まれていないことがわかります。ただし、HasMessageメソッドを使用した場合は機能しません。プログラムは「一致があります」と表示し続けるからです。しかし、「文字列なし!!!」と表示されるはずです。一致するものがないので。では、それを修正する方法は?