質問

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

private DateTime? startdate

どういうことですか DateTime? 平均?

役に立ちましたか?

解決

以来 DateTime です struct, ではありません class, 、あなたは DateTime 物体, ではありません 参照, 、その型のフィールドまたは変数を宣言するとき。

そして、同じように、 int ありえない null, 、 したがって、この DateTime オブジェクトは決してあり得ません null, 参考にならないからです。

疑問符を追加すると、 null 許容型, 、つまり、 どちらか それは DateTime 物体、 または それはです null.

DateTime? の糖衣構文です Nullable<DateTime>, 、 どこ Nullable それ自体は struct.

他のヒント

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

DateTime は null にならない構造体です。から MSDN:

DateTime 値型は、0001 年 1 月 1 日の真夜中 12:00:00、つまり西暦 12 時 00 分 00 秒からの範囲の値で日付と時刻を表します。(西暦または西暦とも呼ばれます) 西暦 9999 年 12 月 31 日午後 11 時 59 分 59 秒まで(西暦)

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

? 値型のサフィックスとして、そうでなければ不可能な 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>.

これは Nullable< DateTime> と同等です。「?」を追加できます。原始的なタイプまたは構造体に。

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

ご存知のとおり、DateTime は構造体であり、DateTime が値型であることを意味します。そのため、DateTime はクラスではないため、参照ではなく DateTime オブジェクトを取得します。その型のフィールドまたは変数を宣言する場合、値型であるため、null で初期化することはできません。 null を受け入れないでください。int と同様に、null にすることはできません。DateTime オブジェクトは参照ではないため、null になることはありません。

ただし、値型の null 許容変数またはフィールドが必要な場合もあります。その場合は、疑問符を使用して null 許容型にし、null を許可します。

例えば:-

日付時刻?日付 = null;

整数?整数値 = null;

上記のコードでは、変数 日付 DateTime のオブジェクトであるか、null です。整数値についても同様です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top