null許容日時のセッターおよびゲッタープロパティを作成する方法。例えば:
private DateTime mTimeStamp;
public DateTime TimeStamp
{
get { return mTimeStamp; }
set { mTimeStamp = value; }
}
Null許容属性はsetterとgetterをサポートしていますか、それともパブリックとして宣言する必要がありますか?
private DateTime? mTimeStamp;
public DateTime TimeStamp
{
}
代わりにこれを行うことができます:
public DateTime? TimeStamp { get; set; }
コンパイラで問題が発生した場合は、関連する部分の1つ(private
メンバー変数またはプロパティのデータ型)のみを変更したことが原因である可能性があります。もちろん、それらは一致する必要があり、自動プロパティはそれをうまく処理します。
[〜#〜] edit [〜#〜]さらに明確にするために、DateTime?
は単に?
属性で装飾されているだけではありません-それはDateTime
とはまったく異なります。 DateTime?
はNullable<DateTime>
の省略形です。これは、T
である汎用パラメーターstruct
をラップすることにより、非参照型にnull許容サポートを提供する汎用( Nullable<T>
)です。 。
通常のDateTime
プロパティと同じ方法でプロパティを作成できます。
public DateTime? TimeStamp { get; set; }
この方法でDateTimeをnull許容にすることができるはずです。
private DateTime? mTimeStamp;
public DateTime? TimeStamp
{
get { return mTimeStamp; }
set { mTimeStamp = value; }
}
この修飾子は他のタイプでも使用できます。ここを読んでください: http://msdn.Microsoft.com/en-us/library/1t3y8s4s%28v=VS.100%29.aspx
Null許容のDateTimeは、通常のDateTimeとは別の型であり、他の型と同じように使用できます。したがって、コードは次のようになります。
private DateTime? mTimeStamp;
public DateTime? TimeStamp
{
get { return mTimeStamp; }
set { mTimeStamp = value; }
}
これは、null許容でないものと同じです。
public DateTime? TimeStamp { get; set; }
上位のサンプルコードでDateTime
をDateTime?
に置き換えることができます(投稿の下部にコードがないようです)。
private DateTime? mTimeStamp;
public DateTime? TimeStamp
{
get { return mTimeStamp; }
set { mTimeStamp = value; }
}
または、.net3.0以降を使用している場合
public DateTime? TimeStamp {get;set;}