转:String.Empty、string=”” 和null的区别

原文地址:http://www.cnblogs.com/fanyong/archive/2012/11/01/2750163.html

String.Empty是string类的一个静态常量;

String.Empty和string=””区别不大,因为String.Empty的内部实现是:

public static readonly string Empty;
//这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢?

//String的构造函数
static String(){
    Empty = "";//Empty就是他""
    WhitespaceChars = new char[] {
        ‘\t‘, ‘\n‘, ‘\v‘, ‘\f‘, ‘\r‘, ‘ ‘, ‘\x0085‘, ‘\x00a0‘, ‘?‘, ‘ ‘, ‘ ‘, ‘ ‘, ‘ ‘, ‘?‘, ‘?‘, ‘?‘,
        ‘?‘, ‘?‘, ‘ ‘, ‘?‘, ‘‘, ‘\u2028‘, ‘\u2029‘, ‘ ‘, ‘‘
     };

}

  

再看一段代码:

string s1 = "";
string s2 = string.Empty;
if (s1 == s2)<br>{
    Console.WriteLine("一模一样!");
}
// 结果都是True
Console.WriteLine("".Equals(string.Empty));
Console.WriteLine(object.ReferenceEquals(string.Empty, ""));

  

既然String.Empty和string=””一样,同样需要占用内存空间,为什么推荐优先使用String.Empty ?

string.Empty只是让代码好读,防止代码产生歧义,比如说:

string s = "";  string s = " ";   这个不细心看,很难看出是空字符串还是空格字符。

如果判断一个字符串是否是空串,使用

if(s==String.Empty)和if(s==””)的效率是一样的,但是最高效的写法是if(s.Length==0)

string.IsNullOrEmpty的内部实现方式:

public static bool IsNullOrEmpty(string value)<br>{<br>    if (value != null)
    {
        return (value.Length == 0);
    }
    return true;
}

  

而string str=null则是表示str未指向任何对象。

时间: 2024-10-14 00:48:57

转:String.Empty、string=”” 和null的区别的相关文章

C# 中 string.Empty、&quot;&quot;、null的区别

原文C# 中 string.Empty."".null的区别 一.string.Empty 和 "" 1.Empty是string类中的一个静态的只读字段,它是这样定义的: // Represents the empty string. This field is read-only. public static readonly string Empty; 也就是说 string.Empty 的内部实现是等于 "" 的.二者在优化方面稍有差别,

C#中String.Empty,“”,NULL的区别

一.String.Empty String类的静态只读字段.定义如下: public static readonly string Empty; 二.“” 被赋值为“”的字符串变量,会在栈上保存一个地址(占4个字节),该地址会指向 同时在堆上分配一个长度为0的内存空间(存放字符串的值). 三.null 被赋值为null的变量,会在栈上保存一个地址(占4个字节),该地址不会指向堆上的任何内存空间(1.初始赋值时不分配内存:2.将原来所指的内存空间变为不可达). 总结: 1.String.Empty

C#中string.Empty和&quot;&quot;、null的区别

string.Empty是string类的一个静态常量,而""则表示一个空字符串. string是一种特殊的引用类型,它的null值则表示没有分配内存. 使用ILSpy反编译String类,可以看到string.Equalus方法重写了Object的Equalus()方法:先比较引用,再比较字符串的内容,地址相同,值必相同. 1 // 重写Object方法 2 [__DynamicallyInvokable, ReliabilityContract(Consistency.WillNo

string=&quot;&quot; string=empty string=null

一:""与string.Empty我认为是一样的.网上有一篇被转载了几十遍的文章是这样说的string.Empty 不分配存储空间,"" 分配一个长度为空的存储空间,我认为这句话是错误并且含糊不清的. 1.实际上Empty是string类中的一个静态的只读字段,他的定义是这样的: public static readonly String Empty = ""; 也就是说string.Empty的内部实现是等于””的. 2.我要反驳string.

C# null,string.Empty,&quot;&quot;,DBNull 的区别

[null] null 在C# 中是一个关键字,表示不引用任何对象的空引用的文字值. null 是引用类型变量的默认值. 普通值类型不能为 null. null 在 VS 中定位不出来具体是怎么定义的.一般通过类名映射过来的关键字,都可以定位到声明位置.所以null是比较特殊的. 这个东西要跟踪源头还比较麻烦,感觉找不到具体定义. MSDN上说明很简单:null 关键字是表示不引用任何对象的空引用的文字值. null 是引用类型变量的默认值. 普通值类型不能为 null. stock overf

Java中string 创建对象时 “”和null的区别

null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s=""; string.trim()就不会抛,为什么? 答: NULL代表声明了一个空对象,根本就不是一个字符串. ""代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串. NULL代表声明了一个空对象,对空对象做任何操作都不行的,除了=和== "

【转载】String.Empty、string=”” 和null的区别

String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: ? 1 2 3 4 5 6 7 8 9 10 11 12 public static readonly string Empty; //这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢? //String的构造函数 static String(){     Empty = "";

String.Empty、string=”” 和null的区别

String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: 1 2 3 4 5 6 7 8 9 10 11 12 public static readonly string Empty; //这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢? //String的构造函数 static String(){     Empty = "";//

C#中NULL,&quot;&quot;,DBNULL,String.Empty,Convert.IsDBNull()的区别

C#中的空值的判断较麻烦,不象在VB6中那么简单,这些各种空值的判断和理解对不熟悉的人来说,可能很麻烦,现就我在使用过程中的一点体会和大家共同分享. (1)NULL null 关键字是表示不引用任何对象的空引用的文字值.null 是引用类型变量的默认值.那么也只有引用型的变量可以为NULL,如果 int i=null,的话,是不可以的,因为Int是值类型的. (2)DBNULL DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是