2010-09-15 7 views
2

Я получаю данные из файла xml, а иногда дата пуста.Как вставить пустую или пустую строку в datetime var?

у меня есть этот код:

try { TimeTo = Convert.ToDateTime(R[15].ToString()); }  
catch { TimeTo = null ; } 

, но я получил ошибку, потому что я не могу вставить нуль в даты и времени вар

, что я могу сделать?

Тхака-х заранее

ответ

12

Сделать TimeTo обнуляемого свойство как это:

public DateTime? TimeTo { get; set; } 

Лучшее решение, чем th е попытаться/поймать, чтобы сделать что-то вроде этого:

TimeTo = string.IsNullOrEmpty(R[15].ToString()) 
      ? (DateTime?) null 
      : DateTime.Parse(R[15].ToString()); 
+0

спасибо !! это работает !! – Gold

5

DateTime является типом значения, и, следовательно, не может быть назначен null. Но ...

DateTime.MinValue - хорошая замена для этого, чтобы указать на недостаток ценности.

try { TimeTo = Convert.ToDateTime(R[15].ToString()); }  
catch { TimeTo = DateTime.MinValue; } 

Другим вариантом является использование обнуляемого типов:

DateTime? TimeTo = null; 

И ссылаться на него, как это:

if (TimeTo.HasValue) 
    something = TimeTo.Value; 
+0

Другим полезным способом ссылки на него является оператор свернуть. Выражение будет выглядеть так: 'TimeTo ?? defaultTimeTo', разрешая последний, если первый имеет значение null. –

+0

Извините, '??' - оператор нулевой коалесценции в C#. –

3

на небольшой касательной, если вы ожидаете, что R [15] не может быть DateTime Я хотел бы предложить TryParse лучший вариант

if(DateTime.TryParse(R[15].ToString(),out TimeTo)) 
{ 
    //TimeTo is set to the R[15] date do stuff you need to if it is good 
} 
else 
{ 
    //TimeTo is default (i.e. DateTime.MinValue) do stuff for a bad conversion (e.g. log, raise exception etc) 
} 
Смежные вопросы