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/archive/2012/11/01/2750163.html

[转载]String.Empty、string=”” 和null的区别的更多相关文章

  1. C# 中 string.Empty、""、null的区别

    原文C# 中 string.Empty."".null的区别 一.string.Empty 和 "" 1.Empty是string类中的一个静态的只读字段,它是 ...

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

    一.String.Empty String类的静态只读字段.定义如下: public static readonly string Empty; 二.“” 被赋值为“”的字符串变量,会在栈上保存一个地 ...

  3. C#中string.Empty和""、null的区别

    string.Empty是string类的一个静态常量,而""则表示一个空字符串. string是一种特殊的引用类型,它的null值则表示没有分配内存. 使用ILSpy反编译Str ...

  4. C# 中 string.Empty、""、null的差别

    一.string.Empty 和 ""                                                           原文1   原文2 1. ...

  5. 重学c#系列——string.empty 和 "" 还有null[二十]

    前言 简单整理一下string.empty 和 "" 还有 null的区别. 正文 首先null 和 string.empty 还有 "" 是不一样的. nul ...

  6. C#中string.Empty、""和null 之间的区别

    1.C#中string.Empty.""和null 之间的区别 (http://blog.csdn.net/henulwj/article/details/7830615)

  7. C# null,string.Empty,"",DBNull 的区别

    [null] null 在C# 中是一个关键字,表示不引用任何对象的空引用的文字值. null 是引用类型变量的默认值. 普通值类型不能为 null. null 在 VS 中定位不出来具体是怎么定义的 ...

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

    原文地址:http://www.cnblogs.com/fanyong/archive/2012/11/01/2750163.html String.Empty是string类的一个静态常量: Str ...

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

    String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: 1 2 3 4 5 6 7 8 9 10 1 ...

随机推荐

  1. OC图片滑动验证

    没事逛cocoaChina的时候有人问图片验证码怎么做,我看了下,网上有很多第三方的框架,但好多都是收费的,所以考虑自己能否做一个,该封装有点简陋,不过可以根据自己需要自行修改 该代码用到的技术,UI ...

  2. 在linux下一般用scp这个命令来通过ssh传输文件

    在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地 ...

  3. 报错解决——make: *** No targets specified and no makefile found. Stop

    wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz tar zxvf ncurses-5.6.tar.gz #切换目录到ncurses ...

  4. TCP、UDP和HTTP详解

    http:是用于www浏览的一个协议.tcp:是机器之间建立连接用的到的一个协议. 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.R ...

  5. 20165236 2017-2018-2 《Java程序设计》第九周学习总结

    20165236 2017-2018-2 <Java程序设计>第九周学习总结 一.第十三章教材内容总结 1.URL类 URL类是java.net包中的一个重要的类,使用URL创建对象的应用 ...

  6. content_type

    1.作用 将app名称与其中表关系进行保存 在models创建表时,关联到ContentType并不会产生实际的字段 2.使用 在models中代码 from django.db import mod ...

  7. maxcompute笔记

    maxcompute安装和配置 https://help.aliyun.com/document_detail/27804.html?spm=a2c4g.11174283.3.5.566a590e0P ...

  8. iNotify.js通知JS 实现浏览器的 title 闪烁、滚动、声音提示、chrome、Firefox、Safari等系统通知。

    https://github.com/jaywcjlove/iNotify     JS 实现浏览器的 title 闪烁.滚动.声音提示.chrome.Firefox.Safari等系统通知. 这是重 ...

  9. obv15 实例6:如果K线柱过多,ZIG将发生变动,导致明显的OBV15指标被隐藏!

    obv

  10. React-Native组件之Text内文字垂直居中方案

    style: { height: 100, textAlign: 'center', textAlignVertical: 'center', } 以上方法在Android上显示水平垂直居中, 但在I ...