String.Empty、string=”” 和null的区别
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)
{ 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)
{
if (value != null) { return (value.Length == 0); } return true; }
而string str=null则是表示str未指向任何对象。
作者:樊勇
出处:http://www.cnblogs.com/fanyong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
我的联系方式:fanyong@gmail.com
个人独立博客:www.fy98.com