可空的 DateTime?

13

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

private DateTime mTimeStamp;

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

可空属性支持setter和getter吗,还是我必须将其声明为public?

private DateTime? mTimeStamp;

public DateTime TimeStamp
{

}
6个回答

21
您可以这样做:
public DateTime? TimeStamp { get; set; }

如果您在编译器方面遇到了问题,那很可能是因为您只更改了关联部分中的一个 - 要么是private成员变量,要么是属性的数据类型。当然,它们需要匹配,并且自动属性可以很好地处理这个问题。 编辑 仅为进一步澄清,DateTime?不仅仅是带有?属性的装饰符 - 它与DateTime完全不同。 DateTime?Nullable<DateTime>的缩写,它是一个通用型(Nullable<T>),通过包装结构体的通用参数T,为非引用类型提供可空支持。

+1 是因为“它们需要匹配”,并且自动属性可以很好地处理它们。 - phoog

3
您可以像创建普通的 DateTime 属性一样创建该属性:
public DateTime? TimeStamp { get; set; }

2

2

可空 DateTime 是一个离散类型,与普通的 DateTime 不同,并且可以像任何其他类型一样使用。因此您的代码应该是:

private DateTime? mTimeStamp;

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

2
private DateTime? mTimeStamp;

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

或者,如果您正在使用 .NET 3.0 或更高版本

public DateTime? TimeStamp {get;set;}

2

这与非空相同:

public DateTime? TimeStamp { get; set; }

您可以在顶部示例代码中将DateTime替换为DateTime?(底部的代码似乎丢失了)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接