C# 如何重置日期时间/字节变量的值?

C# 如何重置日期时间/字节变量的值?,c#,datetime,byte,nullable,reset,C#,Datetime,Byte,Nullable,Reset,我正在从事一个C#项目,在该项目中我声明了两个类变量: DateTime creationDate; byte exRecNo; 该程序有一个while循环,在该循环中,这些变量被赋值。 我希望在循环的每次迭代后将它们的值重置为null,这样就不会保留上一次循环的值 但是,当我尝试执行此操作时,会收到以下错误消息: creationDate = null; “无法将null转换为'System.DateTime',因为它是不可为null的值类型” “无法将null转换为'byte',因为它是

我正在从事一个C#项目,在该项目中我声明了两个类变量:

DateTime creationDate;
byte exRecNo;
该程序有一个while循环,在该循环中,这些变量被赋值。 我希望在循环的每次迭代后将它们的值重置为null,这样就不会保留上一次循环的值

但是,当我尝试执行此操作时,会收到以下错误消息:

creationDate = null;
“无法将null转换为'System.DateTime',因为它是不可为null的值类型”

“无法将null转换为'byte',因为它是不可为null的值类型”

既然我不能将它们设置为null,有没有办法清除它们的值?

没有

值类型的定义是没有单独的“null”或“empty”值。
这些变量总是保存一个值,甚至在您分配任何值之前

您可以将它们设置为默认值,分别为
1/1/0001
0

或者,您可以使用可空类型,它分配额外的存储空间,以便能够保存
null
值。

值类型的定义是没有单独的“null”或“empty”值。
这些变量总是保存一个值,甚至在您分配任何值之前

您可以将它们设置为默认值,分别为
1/1/0001
0


或者,您可以使用可空类型,它分配额外的存储空间,以便能够保存
null
值。

若要将基元/不可空类型声明为可空类型,请使用

DateTime? creationDate;
byte? exRecNo;

要将基元/不可为null的类型声明为可为null,请使用

DateTime? creationDate;
byte? exRecNo;

在While循环中声明变量-换句话说,使用块范围…

在While循环中声明变量-换句话说,使用块范围…

使用

DateTime? creationDate;
byte? exRecNo;
对于可为空的类型

使用

DateTime? creationDate;
byte? exRecNo;
对于可为空的类型

使用
DateTime?
byte?

无法清除其值,可以将其设置为默认值:

  creationDate = new DateTime(); // this gets you {1/1/0001 12:00:00 AM}
  exRecNo = 0; // or new Byte();
使用
DateTime?
byte?

无法清除其值,可以将其设置为默认值:

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

也许您可以使用
DateTime.MinValue
?您可以将它们设置为null-请参阅,如果在while循环中设置值,则无需将这些变量指定为null。也许您可以使用
DateTime.MinValue
?您可以将它们设置为null-如果在while循环中设置值,则无需将这些变量指定为nullwhile循环。请看完整的解释。非常有趣,我不知道你可以这么做。谢谢你的意见!请看完整的解释。非常有趣,我不知道你能做到。谢谢你的意见!这很有道理。谢谢,这很有道理。谢谢。很有意思。我不知道这是可能的。非常感谢您的帮助。我经常使用它们,尤其是在处理数据库中的值时,它是一个可为空的字段。很多时候,
null
是一个有效的值,这就是为什么使用这些可为null的类型非常有趣,我不知道这是可能的。非常感谢您的帮助。我经常使用它们,尤其是在处理数据库中的值时,它是一个可为空的字段。很多时候,
null
是一个有效值,这就是使用这些可空类型的原因