77

私は.NETの本を読んでいますが、コード例の1つに、このフィールドを持つクラス定義があります。

private DateTime? startdate

どういうDateTime?意味ですか?

4

7 に答える 7

139

DateTimeはでstructはなく、であるため、その型のフィールドまたは変数を宣言すると、参照ではなくオブジェクトclassを取得します。DateTime

intそして、できないのと同じように、nullこのDateTimeオブジェクトはnull参照ではないため、決してなることはできません。

疑問符を追加すると、null許容型になります。つまり、オブジェクトである、です。DateTimenull

DateTime?はの構文糖衣ですNullable<DateTime>。ここで、Nullableはですstruct

于 2008-09-21T00:20:10.263 に答える
23

これはnull許容のDateTimeです。?プリミティブ型/構造体がnull許容バージョンであることを示した後。

DateTimeは、nullになることのない構造です。MSDNから:

DateTime値タイプは、日付と時刻を表します。値の範囲は、0001年1月1日深夜12:00:00 Anno Domini、またはAD(西暦、またはCEとも呼ばれます)から9999年12月31日午後11:59:59までです。 AD(CE)

DateTime?ただし、nullにすることができます。

于 2008-09-21T00:16:34.173 に答える
14

_ 値型の接尾辞として、他の方法では不可能なnull割り当てが可能になります。

http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

基になる型がnull参照も割り当てることができる値型であるオブジェクトを表します。

これは、次のように記述できることを意味します。

    DateTime? a = null;
    if (!a.HasValue)
    {
        a = DateTime.Now;
        if (a.HasValue)
        {
            Console.WriteLine(a.Value);
        }
    }

日付時刻?構文的にはNullable<DateTime>と同等です。

于 2008-09-21T00:20:56.377 に答える
10

Nullable<DateTime>と同等です。「?」を追加できます 任意のプリミティブ型または構造体に。

于 2008-09-21T00:19:44.290 に答える
5

基本的に、プリミティブの追加の状態を提供します。値にすることも、nullにすることもできます。これは、値を割り当てる必要がない状況で役立ちます。したがって、たとえばdatetime.minまたはmaxを使用する代わりに、nullを割り当てて値がないことを表すことができます。

于 2008-09-21T00:21:05.583 に答える