声明变量属性时 ?号的作用

场景:有些时候,我们会看到下面的定义:
      public DateTime? StartDate { getset; }
      可能有些同学还没太注意这种书写方式,即 类型+? 来定义变量。
说明:

            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


-------------------学习笔记------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值