可为空的日期时间

本文关键字:日期 时间 | 更新日期: 2023-09-27 18:20:04

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

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

可为空的属性是否支持setter和getter,或者我必须将其声明为公共?

private DateTime? mTimeStamp;
public DateTime TimeStamp
{
}

可为空的日期时间

你可以这样做:

public DateTime? TimeStamp { get; set; }

如果您在使用编译器时遇到问题,可能是因为您只更改了其中一个关联部分 - private成员变量或属性的数据类型。当然,它们需要匹配,并且自动属性可以很好地为您处理。

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

您可以采用与普通DateTime属性相同的方式创建属性:

public DateTime? TimeStamp { get; set; }

您应该能够以这种方式使 DateTime 为空:

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

可为空的日期时间是常规日期时间的离散类型,可以像任何其他类型一样使用。 所以你的代码将是:

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

它与不可为空相同:

public DateTime? TimeStamp { get; set; }

您可以在顶部示例代码中将DateTime替换为DateTime?(看起来帖子底部缺少代码(。

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

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

public DateTime? TimeStamp {get;set;}