判断为空的方法总结

1.在开发时常常碰到需要判断从数据库中取的值是否为空的情况

如果字段类型为字符串类型我们可以用

string test=dt.Rows[i]["columnName"].ToString();

if(!string.IsNullOrEmpty(test))

但是如果字段类型不为字符串,这样判断可能会有问题,数据库中的某列值返回要么是列值,要么为DBNull,所以不管任何类型的字段我们都可以用

if(test!=DBNull.value)

if(Convert.IsDBNull(test))

进行判断

补充:

DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是 可以表示数据库中的字符串,数字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null , 要么就是具体的为column 的类型的值 。 要么就是 DBNull 。 所以 row[column].ToString() 这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible 。 但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。

2.赋空值

有时候我们要对一个变量进行初始化,需要赋空值,常用的有两种:

string  test=“”;

string  test1=string.Empty;

这两个都是空字符串,但本质上却有很大的区别:""表示一个字符串,字符串为空值,在数据库中占有实际的存储空间,在内存中也有准确的指向;而string.Empty(null)只是定义了一个string类的引用,不占用存储空间,在内存中也没有具体的指向,这样定义后不能直接使用还需要实例化才可以。

3、接受的传参为空或者未定义

 1、 // 判断是否有日期参数传入
        if (!string.IsNullOrEmpty(Request.QueryString["sdate"]))
        {
            Response.Write("传入");
            Response.Write(Request.QueryString["sdate"].ToString());
        }
        else {
            Response.Write("没有传入");
        }
 2、

??运算符 空或未定义的话取右边值  否则取左边的   N??1

Request.QueryString["sdate"]??"";
if (Request.QueryString["sdate"] != null )//不能 Request.QueryString["sdate"] !="" 会报错
        {
            Response.Write(Request.QueryString["sdate"].ToString());

        }

接受传参最好的方式就是string para=Request.QueryString["sdate"]??""; 即使传过来的参数没有定义,也不会出错

注:request可以同时接受post和get的数据
reques.form可以接受post的数据
request.QueryString可以接受get的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值