Как сбросить значение переменных DateTime/byte?

Я работаю над проектом С#, в котором я объявляю две переменные класса:

DateTime creationDate;
byte exRecNo;

В программе есть цикл while, в котором эти переменные получают свои значения. Я хотел бы сбросить их значения до нуля после каждой итерации цикла, чтобы не сохранять значения из предыдущей поездки по циклу.

Однако, когда я пытаюсь это сделать, я получаю следующие сообщения об ошибках:

creationDate = null;

«Невозможно преобразовать значение NULL в« System.DateTime », поскольку это тип значения, не допускающий значение NULL»

exRecNo = null; 

«Невозможно преобразовать значение NULL в« байт », поскольку это тип значения, не допускающий значения NULL»

Поскольку я не могу установить для них значение null, могу ли я каким-либо образом очистить их значения?


person Baxter    schedule 12.06.2012    source источник
comment
Может быть, вы могли бы использовать DateTime.MinValue?   -  person Aleksej Vasinov    schedule 12.06.2012
comment
Вы можете сделать их Nullable — см. msdn.microsoft .com/en-us/library/1t3y8s4s%28v=vs.80%29.aspx   -  person dash    schedule 12.06.2012
comment
Вам не нужно присваивать этим переменным значение null, если вы устанавливаете значение в цикле while.   -  person Security Hound    schedule 12.06.2012


Ответы (5)


Чтобы объявить примитивные / необнуляемые типы как обнуляемые, используйте ?

DateTime? creationDate;
byte? exRecNo;
person Ash Burlaczenko    schedule 12.06.2012
comment
См. msdn.microsoft.com/en-us /library/1t3y8s4s%28v=vs.80%29.aspx для полного объяснения. - person dash; 12.06.2012
comment
Очень интересно, я и не знала, что ты так умеешь. Спасибо за отзыв! - person Baxter; 12.06.2012

No.

Определение типа значения состоит в том, что не существует отдельного «нулевого» или «пустого» значения.
Эти переменные всегда содержат значение, даже до того, как вы его присвоите.

Вы можете установить для них значения по умолчанию, то есть 1/1/0001 и 0 соответственно.

В качестве альтернативы вы можете использовать типы, допускающие значение NULL, которые выделяют дополнительное пространство для хранения значения null.

person SLaks    schedule 12.06.2012
comment
Это имеет большой смысл. Спасибо. - person Baxter; 12.06.2012

Использовать

DateTime? creationDate;
byte? exRecNo;

Для типов, допускающих значение NULL

person CD Smith    schedule 12.06.2012
comment
Очень интересно, я не знал, что это возможно. Большое спасибо за помощь. - person Baxter; 12.06.2012
comment
Я использую их много, особенно когда имею дело со значением из моей БД, которое является полем, допускающим значение NULL. Во многих случаях null является допустимым значением, и именно для этого может использоваться использование этих типов, допускающих значение NULL. - person CD Smith; 12.06.2012

Объявите переменную в цикле "Пока" - другими словами, используйте область блока...

person Martin Milan    schedule 12.06.2012

Используйте Nullable DateTime? или byte?

Вы не можете очистить их значения, вы можете установить для них значения по умолчанию:

  creationDate = new DateTime(); // this gets you {1/1/0001 12:00:00 AM}
  exRecNo = 0; // or new Byte();
person Habib    schedule 12.06.2012