1

我正在开发一个 C# 项目,我在其中声明了两个类变量:

DateTime creationDate;
byte exRecNo;

该程序有一个 while 循环,在其中这些变量被分配了它们的值。我想在每次循环迭代后将它们的值重置为 null,以免保留上一次循环中的值。

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

creationDate = null;

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

exRecNo = null; 

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

由于我无法将它们设置为 null,有什么方法可以清除它们的值吗?

4

5 回答 5

5

不。

值类型的定义是没有单独的“null”或“empty”值。即使在您分配任何变量之前,
这些变量也始终包含一个值。

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

或者,您可以使用可为空的类型,它分配额外的存储空间来保存一个null值。

于 2012-06-12T12:22:44.777 回答
4

要将原始/非可空类型声明为可空,请使用?

DateTime? creationDate;
byte? exRecNo;
于 2012-06-12T12:23:36.440 回答
3

采用

DateTime? creationDate;
byte? exRecNo;

对于可空类型

于 2012-06-12T12:24:05.403 回答
2

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

于 2012-06-12T12:23:52.867 回答
2

使用Nullable DateTime?byte?

您不能清除它们的值,您可以将它们设置为默认值:

  creationDate = new DateTime(); // this gets you {1/1/0001 12:00:00 AM}
  exRecNo = 0; // or new Byte();
于 2012-06-12T12:24:20.497 回答