Как я могу удалить значение из DateTime? - PullRequest
3 голосов
/ 21 октября 2010

У меня есть существующий DateTime? объект с датой и временем. Я хочу удалить значение datetime из него, поэтому, когда вы спрашиваете «HasValue», он возвращает false?

Ответы [ 5 ]

7 голосов
/ 21 октября 2010

Nullable<T> является неизменным, поэтому вам придется переназначить переменную на другое значение, чтобы иметь возможность изменить / удалить базовое значение.Это имеет смысл, поскольку это тип значения (хотя специальный один при этом);значения-типы обычно неизменны в рамках.Вы заметите, что ни Value, ни свойство HasValue для Nullable<T> не имеют установщика.

DateTime? nullableDt = DateTime.Now; 
Console.WriteLine(nullableDt.HasValue); //true

nullableDt = null; 
Console.WriteLine(nullableDt.HasValue); //false

или

nullableDt = new DateTime?();
5 голосов
/ 21 октября 2010

Установите в ноль.

3 голосов
/ 21 октября 2010

Если у вас

DateTime? value = DateTime.Now;

, звоните

value = null;
1 голос
/ 21 октября 2010

Почему бы просто не установить его обратно в ноль?

  DateTime? d = null;

  System.Diagnostics.Debug.WriteLine("HasValue1 = {0}", d.HasValue); //False

  d = DateTime.Now;

  System.Diagnostics.Debug.WriteLine("HasValue2 = {0}", d.HasValue); //True

  d = null;

  System.Diagnostics.Debug.WriteLine("HasValue3 = {0}", d.HasValue); //False
0 голосов
/ 21 июля 2017

Сама переменная не может быть нулевой, хотя вы можете установить minValue, она эквивалентна '1/1/0001 00: 00: 00'

DateTime dvar = DateTime.MinValue;
...