asp.net中DBNull.Value,null,String.Empty区别浅析

 更新时间:2013年08月14日 09:43:26   作者:  
这篇文章来给大家介绍asp.net中DBNull.Value,null,String.Empty区别浅析,有需要的同学可以参考一下

首先,“null”是C#中(VB.NET为Nothing),表示某个引用对象变量“未引用”任何实体时候的状况(典型症状是如果调用这个变量的某个方法,会抛出NullException之类的异常)。

String.Empty是一个静态的公共变量,表示某String变量不包含任何字符(等同于"")。不过从性能上说,用String.Empty比声明用一个""好一些——显然地,前者是String类的静态变量,无论如何使用只产生一个实例,后者用几次恐怕要产生几次了。

复制代码 代码如下:

string str="";

//“”:表示在栈中分配了数据引用存储区域,并在堆中创建了实际数据存储区域,并将引用地址赋给了变量,在堆中分配了一个长度为空的存储空间。

string str=string.Empty;

//string.Empty: 表示在栈中分配了数据引用存储区域,并在堆中创建了用于实际数据存储的区域,并将引用地址赋给了变量,但在堆中创建的存储空间未分配或未存储数据。


至于DBNull.Value,也是一个静态属性。它唯独用于数据库(例如使用DataReader读取数据的时候,又或者是DataTable中某行某列数据的比较时候)的“空数值”比较。因为在SQL中某个字段为Null只是说明该字段“没有任何值”,并不是C#中“不存在引用”。因此注意这些问题:

1)如果用DataReader执行ExecuteScalar,如果你不确定是否会获取数据,必须采用null进行判断(因为空引用);如果你确信读取至少一条数据,但是不确定是否数据为空,可以使用DBNull.Value进行数值判断。

2)承接1,如果某条字段确信没有任何数据,等同于没有任何字符,等同于String.Empty和"",因此完全可以用String.Empty或者""进行判断(重要结论:DbNull.Value=String.Empty="")。

3)另外,如果对string类型的DataColumn进行赋值(譬如赋值为null),既便如此,实际上在DataTable中不可能存一个null(为了和SQL实际数值对应),会转化成String.Empty或者是""。判断方法同“重要结论”。

简单地说:

string str ="";

给你一张白纸;

string str = null;

连白纸也没有。

string.Empty就相当于""

一般用于字符串的初始化

比如:

复制代码 代码如下:

string a;

Console.WriteLine(a);//这里会报错,因为没有初始化a


而下面不会报错:
复制代码 代码如下:

string a=string.Empty;

Console.WriteLine(a);


或者用于比较:
复制代码 代码如下:

if(a=="")

if(a==string.Empty)


上面两句是一样的效果。

string.Empty不分配存储空间

""分配一个长度为空的存储空间

所以一般用string.Empty

为了以后跨平台,还是用string.empty

在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:

复制代码 代码如下:

string s = "";

string s2 = string.Empty;

if (s == string.Empty) {

//
}


if语句成立

判定为空字符串的几种写法,按照性能从高到低的顺序是:

s.Length == 0 优于 s == string.Empty 优于 s == ""

相关文章

  • asp.net网站实现接入QQ登录示例代码

    asp.net网站实现接入QQ登录示例代码

    相信大家在做开发的时候,常会遇到集成QQ登录的功能,本文主要说的是利用asp.net代码的实现方式,逻辑部分主要还是根据帮助文档来的。不懂的同学可以先看看文档。下面来一起学习学习。
    2016-08-08
  • ASP.NET Core静态文件的使用方法

    ASP.NET Core静态文件的使用方法

    这篇文章主要给大家介绍了关于ASP.NET Core静态文件的使用方法,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • ASP.NET4的自动启动特性浅析

    ASP.NET4的自动启动特性浅析

    本篇文章讨论一个你可以选择利用的ASP.NET4中小小的,但很棒的新特性,即自动启动,需要的朋友可以参考下
    2015-10-10
  • ASP.NET中GridView的文件输出流方式

    ASP.NET中GridView的文件输出流方式

    本文的主要内容是讲ASP.NET中GridView输出显示的文件,这是个人项目中的一点小经验,希望能给到有需要帮助的人。
    2016-08-08
  • C# 中使用iTextSharp组件创建PDF的简单方法

    C# 中使用iTextSharp组件创建PDF的简单方法

    C# 中使用iTextSharp组件创建PDF的简单方法,需要的朋友可以参考一下
    2013-03-03
  • ASP.NET 统计图表控件小结

    ASP.NET 统计图表控件小结

    近来客户需要将前段时间开发的统计信息用图表展示出来,还要多个图表类型,例如:柱状图、饼图、曲线图、三维图等等。在网上google了一下,发现了三个(也许更多)可以使用的控件。下面我们一起看看这三个控件。
    2009-11-11
  • 网页WEB打印控件制作

    网页WEB打印控件制作

    这篇文章主要介绍了网页WEB打印控件制作 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • asp.net System.Guid ToString五种格式

    asp.net System.Guid ToString五种格式

    这篇文章主要介绍了asp.net System.Guid ToString五种格式,需要的朋友可以参考下
    2017-02-02
  • 动态ItemTemplate的实现(译) - item,template

    动态ItemTemplate的实现(译) - item,template

    动态ItemTemplate的实现(译) - item,template...
    2007-02-02
  • ASP.NET中画图形验证码的实现代码

    ASP.NET中画图形验证码的实现代码

    这篇文章给大家介绍了asp.net中画图形验证码的实现方法,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01

最新评论