Nullable DateTime?

как создать сеттер и getter Свойства для NULL-времени. например:

private DateTime mTimeStamp;

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

Поддерживаются ли атрибуты с нулевым значением для setter и getter, или я могу объявить его общедоступным?

private DateTime? mTimeStamp;

public DateTime TimeStamp
{

}

Ответ 1

Вместо этого вы можете сделать это:

public DateTime? TimeStamp { get; set; }

Если у вас возникли проблемы с компилятором, это возможно потому, что вы только изменили одну из связанных частей - либо переменную-член private, либо тип данных свойства. Разумеется, они должны совпадать, и авто-свойства обрабатывают это для вас красиво.

EDIT Чтобы уточнить, DateTime? не просто украшен атрибутом ?, он полностью отличается от DateTime. DateTime? является сокращением для Nullable<DateTime>, который является общим (Nullable<T>), который обеспечивает поддержку NULL для типов без ссылки путем обнуления общего параметра T, который является struct.

Ответ 2

Вы можете создать свойство так же, как и обычное свойство DateTime:

public DateTime? TimeStamp { get; set; }

Ответ 3

Вы можете сделать 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

Ответ 4

NULL DateTime - это дискретный тип из обычного DateTime и может использоваться как любой другой тип. Таким образом, ваш код будет выглядеть следующим образом:

private DateTime? mTimeStamp;

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

Ответ 5

Это то же самое, что и для не-nullable:

public DateTime? TimeStamp { get; set; }

Вы можете заменить DateTime на DateTime? в своем верхнем примере кода (похоже, код отсутствует в нижней части вашего сообщения).

Ответ 6

private DateTime? mTimeStamp;

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

или, если вы используете .net 3.0 +

public DateTime? TimeStamp {get;set;}