Я хотел бы попытаться разобрать string как DateTime?, и если он не сработает, установите значение null. Единственный способ, которым я могу это сделать, это следующее, но это не кажется очень опрятным.
DateTime temp;
DateTime? whatIActuallyWant = null;
if (DateTime.TryParse(txtDate.Text, out temp)) whatIActuallyWant = temp;
Это единственный способ?