C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でNullable(null許容)DateTimeを使う方法

C#において、DateTimeは値型であるため、通常はnullを代入することができません。しかし、null許容型(Nullable型)を使用すると、DateTime型の変数にnullリテラルを代入できるようになります。

null許容のDateTimeは、型名の後ろに疑問符(?)を付ける次の構文で宣言します。

DateTime?

以下は、Nullable DateTimeを実装するサンプルコードです。

コード例

using System;
class Program {
    static void Main() {
        DateTime? dt = null;
        DateFunc(dt);
        dt = DateTime.Now;
        DateFunc(dt);
        dt = null;
        Console.WriteLine(dt.GetValueOrDefault());
    }
    static void DateFunc(DateTime? dt) {
        if (dt.HasValue) {
            Console.WriteLine(dt.Value);
        } else {
            Console.WriteLine(0);
        }
    }
}

コードのポイント

  • HasValueプロパティ:変数に値が設定されているかどうかを判定します。値があればtruenullならfalseを返します。
  • Valueプロパティ:実際のDateTime値を取得します。nullの場合にアクセスすると例外が発生するため、事前にHasValueでのチェックが必要です。
  • GetValueOrDefault()メソッド:値が設定されていればその値を、nullの場合は既定値(DateTime.MinValue=0001年1月1日)を返します。

出力結果

0
9/17/2018 8:27:07 AM
1/1/0001 12:00:00 AM

このように、null許容型を使うことで、「日付が未設定である状態」を明確に表現でき、データベースのNULL値を扱う場面などで特に役立ちます。

  1. C#のDateTime.AddHours()メソッドの使い方を徹底解説

    C#のDateTime.AddHours()メソッドは、指定した時間数を現在のDateTimeインスタンスの値に加算するためのメソッドです。重要なポイントとして、このメソッドは元のDateTimeオブジェクトを変更せず、計算結果を含む新しいDateTimeオブジェクトを返します。基本仕様DateTimeは不変(イミュータブル)な構造体のため、AddHours()を呼び出しても元の値は変わりません。戻り値は加算後の日時を持つ新しいDateTimeです。構文public DateTime AddHours (double hrs);パラメータ hrs には加算する時間数を指定します。負の値を渡すこ

  2. C#のDateTime.AddDays()メソッドの使い方を徹底解説!日付に日数を加算する方法

    C#のDateTime.AddDays()メソッドは、現在のDateTimeインスタンスの値に指定した日数を加算するためのメソッドです。このメソッドは元のDateTimeオブジェクトを変更するのではなく、計算結果として新しいDateTimeオブジェクトを返します。そのため、戻り値を受け取る変数が必要になる点に注意しましょう。 基本構文 DateTime.AddDays()メソッドの構文は以下のとおりです。 public DateTime AddDays (double days); 引数 days には加算したい日数をdouble型で指定します。負の値を渡すことで、日付を減算(過去の日付に移動