アプリケーション内で1つしか無い事を保証する生成方法(Singleton)を記載します。
グローバル変数などアプリケーション内で1つで良い場合があります。その場合にいくつもオブジェクトを作成されては困ります。のでそれを保証する書き方です。(必要性があるかといわれると・・・)
アプリケーションを起動した際の時間は1つで、次回起動するまで変わりません。それを例にします。
シングルトン例
unsafe class GlobalTime { private static GlobalTime _Instance; /// <summary> /// コンストラクタ /// </summary> protected GlobalTime() { _Instance = null; _startDateTime = DateTime.Now; } /// <summary> /// インスタンスの取得 /// </summary> /// <returns></returns> public static GlobalTime getInstance() { if (_Instance == null) { _Instance = new GlobalTime(); } return _Instance; } /// <summary> /// 開始日時の取得 /// </summary> /// <returns></returns> public DateTime getStartDateTime() { return _startDateTime; } private DateTime _startDateTime; }
上記ではコンストラクタをprotectedで保護します。のでnewでの生成ができません。
インスタンスは、getInstance()で取得して使います。
呼び出し側
//インスタンスの取得 GlobalTime gt = GlobalTime.getInstance(); //public メソッドの呼び出し DateTime dt = gt.getStartDateTime();