テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

【Unity】DateTimeクラスにnullを設定したい場合の対処法(C#)

【Unity】DateTimeクラスにnullを設定したい場合の対処法(C#)

Unityでカレンダー画面を実装するためにDateTimeクラスを使用したのですが、
DateTimeクラスはそのままだとnullが設定できないっぽいです。
今回はDateTimeクラスにnullを設定する方法に関するメモです。



【Unity】DateTimeクラスにnullを設定したい



やりたいこととしては以下です。

  • フィールドにDateTimeクラスのcurrentを宣言しておく
  • カレンダーで日付を選択した時だけcurrentに値を入れる
  • 他の月に移動した場合は、currentにnullを設定したい
  • currentにnullが設定されている場合は、カレンダーのどの日付も選択されていない状態にしたい

DateTimeクラスにnullが設定できれば何も問題なかったのですが、試したところ
DateTimeクラスはnull非許容のクラスのようです。

【Unity】DateTimeクラスにnullを設定したい場合の対処法(C#)

DateTimeクラスにいちいち架空の日付を設定するのは余計なバグが増える可能性もあるので、できればやりたくないです。
なのでnullを設定する方法を調べてみました。
調べた限りだと、多少手を加えないと実現できないようです。



【Unity】DateTimeクラスにnullを設定したい場合の対処法


public DateTime? current;

 public DateTime? GetDateInit()
 {
        return null;
 }

public void Test()
{
        //処理
        current = GetDateInit();//nullを設定
        //処理
        if(current == null)
        {
             //DateTimeクラスがnullの場合の処理
        }
}

上記のようにやればDateTimeクラスにnullを設定したり、nullかどうかの判別ができそうです。
注意点としては、「DateTime」を「DateTime?」として扱うことになるので、
「DateTime」を値として渡したい場合は「DateTime.Value」でDateTimeの値を渡した方が良さそうです。

参考:
docs.microsoft.com