SQL Server(7)——空值问题(2)——C#中的null

66 篇文章 1 订阅
49 篇文章 1 订阅

在C#中,int、bool、DateTime 等值类型的数据不可以为 null 。

值类型的特点:值传递。

string、person 等属于引用类型,其值可以为 null 。

值类型和引用类型的区别是:传递数据时,值类型是值传递(拷贝传递),可以为 null ;引用类型是引用传递,不可以为 null 。

----------------------------------------------------

注意:以上是在C#中。在数据库中,int、bool、DateTime 等是可以为 null 的。

----------------------------------------------------

如果数据库里面存的是 NULL,那么在 C# 中用 row["TelPhone"] 取出来的数据的值是 DBNull.value , 这是ADO.Net 对于 C# 中 int 不可以为 null 、数据库中int可以为 null 的一个权衡。DBNull.Value 不等于 null 。

以下两行代码的效果是一样,但是推荐使用第二行,因为代码量比较少。

            if (row["TelPhone"]==DBNull.Value)//在ado.net中判断字段值是否为null的标准方法
            if (row.IsNull("TelPhone"))//更简单的判断数据库中字段值为null的方法

在值类型后加?就成为了可空类型。如:

int? i = null; //加了?了,所以这里的i是可控类型
i = 90;
i++;

再比如:

        public static int? GetAge()
        {
            if (DateTime.Now.Second % 2 == 0)
            {
                return 20;
            }
            else
            {
                return null;
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值