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 =  "" ; //Empty就是他""
     WhitespaceChars =  new  char [] {
         '\t' '\n' '\v' '\f' '\r' ' ' '\x0085' '\x00a0' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ,
         ' ' ' ' ' ' ' ' '' '\u2028' '\u2029' ' ' ''
      };
 
}

  

 再看一段代码:

1
2
3
4
5
6
7
8
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未指向任何对象。


作者:樊勇 
出处:http://www.cnblogs.com/fanyong/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 
我的联系方式:fanyong@gmail.com 
个人独立博客:www.fy98.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值