2012-01-12 74 views
10

如何为可为空的日期时间创建setter和getter属性。 例如:可以为空的日期时间?

private DateTime mTimeStamp; 

public DateTime TimeStamp 
{ 
     get { return mTimeStamp; } 
     set { mTimeStamp = value; } 
} 

是否为空的属性支持setter和getter或者我宣布它公开?

private DateTime? mTimeStamp; 

public DateTime TimeStamp 
{ 

} 

回答

17

你可以做这个:

public DateTime? TimeStamp { get; set; } 

如果你与它有可能是因为你只改变了相关部件的一个编译器的麻烦 - 要么private成员变量或属性的数据类型。当然,它们需要匹配,并且自动属性可以很好地处理它。

编辑只是为了进一步澄清,DateTime?不仅仅是装饰着?属性 - 它是从完全DateTime不同DateTime?Nullable<DateTime>的缩写,它是一个通用(Nullable<T>),它通过封装通用参数T(它是一个struct),为非引用类型提供可空支持。

+0

+1 “他们需要匹配” 和汽车性能的处理是很好的。 – phoog 2012-01-12 18:09:49

3

您可以创建以同样的方式将财产作为一个正常DateTime属性:

public DateTime? TimeStamp { get; set; } 
2

可空日期时间是从一个普通的DateTime离散型,可以像任何其他类型的使用。所以,你的代码将是:

private DateTime? mTimeStamp; 

public DateTime? TimeStamp 
{ 
     get { return mTimeStamp; } 
     set { mTimeStamp = value; } 
} 
2

这是相同的为非null:

public DateTime? TimeStamp { get; set; }

您可以在上面的示例代码替换DateTimeDateTime?(貌似代码在您的文章底部丢失)。

2
private DateTime? mTimeStamp; 

public DateTime? TimeStamp 
{ 
    get { return mTimeStamp; } 
    set { mTimeStamp = value; } 
} 

,或者如果您使用的是.NET 3.0+

public DateTime? TimeStamp {get;set;} 
相关问题