2012-01-12 2 views
10

Как создать сеттер и getter Свойства для значения NULL для даты и времени. , например:Nullable DateTime?

private DateTime mTimeStamp; 

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

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

private DateTime? mTimeStamp; 

public DateTime TimeStamp 
{ 

} 

ответ

17

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

public DateTime? TimeStamp { get; set; } 

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

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

+0

+1 для "они должны соответствовать" и авто свойства обработки, что приятно. – phoog

2

Вы должны быть в состоянии сделать 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

3

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

public DateTime? TimeStamp { get; set; } 
2

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

private DateTime? mTimeStamp; 

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

Это так же, как ненулевое:

public DateTime? TimeStamp { get; set; }

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

2
private DateTime? mTimeStamp; 

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

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

public DateTime? TimeStamp {get;set;} 
Смежные вопросы