区分空字符串和null

Posted maoshuyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区分空字符串和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();
        }
    }

 

以上是关于区分空字符串和null的主要内容,如果未能解决你的问题,请参考以下文章

hive的空字符串与null

如何区分 .NET 中的空字符串和零长度字符串?

Java 空字符串和 字符串为null的区别

如何合并空字符串和 NULL 值?

Java判断空字符串和对象是否为null

Java判断空字符串和对象是否为null