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;}