区分空字符串和null

核心思想: string.Empty等价于 ""  ,但是和null的意义完全不同!

string str = null;

这条语句只是在栈中分配了一个string引用,但是并没有在堆中分配任何东西;string.Length是错误的!它并没有所谓的长度,抛出NullReferenceException;

string str = "";

这条语句等效于 string str = string.Empty;   这条语句在堆中也分配了一些东西,只不过str引用指向的字符串的长度是零,str.Length = 0;

判断一个字符串引用为空:   str == null

判断一个字符串为空字符串:  str == ""  或   str == string.Empty  或  str.Length == 0;

 class Program
    {
        static void Main(string[] args)
        {
            string str = "";
            Console.WriteLine(str.Length); //输出0
            if(str == string.Empty)
            {
                Console.WriteLine("OK");//输出OK
            }

            str = null;
            Console.WriteLine(str.Length); //不会输出0,抛出异常
            if (str == string.Empty)
            {
                Console.WriteLine("OK");//不会输出OK
            }

            Console.Read();
        }
    }

原文地址:https://www.cnblogs.com/maoshuyi/p/9922467.html

时间: 2024-10-02 18:51:06

区分空字符串和null的相关文章

Access空字符串和Null值

什么是空字符串和Null值: Microsoft Access可以区分两种类型的空值.因为在某些情况下,字段为空,可能是因为信息目前无法获得,或者字段不适用于某一特定的记录.例如,表中有一个“电话号码”字段,将其保留为空白,可能是因为不知道顾客的电话号码,或者该顾客没有电话号码.在这种情况下,使字段保留为空或输入Null值,意味着“不知道”.双引号内为空字符串则意味着“知道没有值”.采用字段的“必填字段”和“允许空字符串”属性的不同设置组合,可以控制空白字段的处理.“允许空字符串”属性只能用于“

Oracle坑之-空字符串与NULL

空字符串与NULL 首先有如下代码 SELECT * FROM Pdc_DataDomain DD INNER JOIN Pdc_DD_Table DDT ON DD.DataDomainID = DDT.DataDomainID AND DD.ApplicationDBID = '3e7c6764d73f4c7786c99e5b72eb6912' AND DDT.TableName <> '#' AND NOT EXISTS (SELECT * FROM pdc_Application_3e

解决CsvWriter:中文乱码、末尾行多一行空格(/r)、非第一列空字符串&quot;&quot;显示null问题

一:主要内容 解决CsvWriter存csv,csv文件打开后中文乱码问题 解决CsvWriter存csv,csv文件最后一行总是多一行空行的问题 解决CsvWriter存csv,csv文件不是第一列的时候,想存入""即空字符串无法存入显示null的问题 二:解决问题前:需要做的事情 因为网上的CsvWrite的jar包导入到我们的工程中是class文件,针对上面的问题是无法修改源码的,但是我们又想用这个工具来操作csv,所以可以在自己的工程中首先pom引用这个jar包 <dep

java 空字符串与null区别

转自:http://liucun.iteye.com/blog/801691 " "分配了内存 :null没有 调用null的字符串的方法会抛空指针异常. ""是一个字符串(String).它在内存中是存在的.它可以使用Object对象中的方法(如"".toString();"".equals()) 而null它是一个空对象.在内存中是不存在的.它不可以使用Object对象中的方法 ""占内存.. 在内存中

空字符串(“”)和null的区别

1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也就是说它的长度为0.例如声明一个字符串String str = "" ; 2.内存分配String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间:String str = "";    表示声明一个字符串类型的引用,其值为""

空字符串(“”)和null和空格字符串(&quot; &quot;)的区别

1.类型 null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也就是说它的长度为0,但它是一个字符串.例如声明一个字符串String str = “” ; 2.内存分配String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间:String str = “”; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用

Javascript 中的【false】,【零值】,【null】,【undefined】和【空字符串】

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: <script type="text/javascript">     alert(typeof(false) === 'boolean');     alert(typeof(0) === 'number');     alert(typeof(&

Javascript 中的false、0、null、undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: [html] view plaincopyprint? <script type="text/javascript"> alert(typeof(false) === 'boolean'); alert(typeof(0) === 'number')

Javascript 中的false,零值,null,undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: <script type="text/javascript"> alert(typeof(false) === 'boolean'); alert(typeof(0) === 'number'); alert(typeof("")