アプリケーション内で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();