场景:有些时候,我们会看到下面的定义:
public DateTime? StartDate { get; set; }
可能有些同学还没太注意这种书写方式,即 类型+? 来定义变量。
说明:
DateTime 是值类型(可以思考都有哪些值类型,比如int等),.NET 值类型一经初始化,就有必须有值,不能赋 null
但是数据库中任意类型都可以有 空 -> null,所以,.net 2.0 引入了可空类型,建立在泛型的基础上,int? 是 C# 的特定语法,实际上是 Nullable<int>
比如:
int? num1;
int num2;
num1 = null;//正确
num2 = null; //错误
用途:
// 可空类型用途主要是从数据库读取数据有可能为空,而不是插入使用,插入数据都要进行验证,如果要插入数据库的null,则使用DBNull.value
判断取出的数据是否为数据库中的null,如果是则赋值给可空的datetime类型的Lockdatatime 属性
tseat.Lockdatatime = reader.IsDBNull(5) ? null : (DateTime?)reader.GetDateTime(5);
判断取出的数据是否为数据库中的null,如果是则赋值给可空的int类型的Testint 属性
tseat.Testint = reader.IsDBNull(6) ? null : (int?)reader.GetInt32(6);error
-------------------学习笔记------------------------------------