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. wordpress 无法发送邮件

    前几天创建了几个wordpress项目,有些项目中用到了用户注册,但是在实际操作中发现,用户注册无法接收到认证链接,在查找了相关资料后大多归类为几个原因: 服务器本身不支持mail()函数 未配置相关 ...

  2. GUI库之认识Tkinter(一)

    一.介绍 Tkinter是Python默认的GUI库,我们经常使用的IDLE就是用Tkinter设计出来的,因此我们在使用的时候直接导入Tkinter模块就好了. 1.特点:可移植性.灵活性高 2.构 ...

  3. [QGLViewer]3D场景鼠标点击位置

    重载鼠标事件: void AxMapControl::mousePressEvent(QMouseEvent* e) { switch(currentTool) { case AX_DRAW_DIRE ...

  4. window下git的下载

    window下git的下载window下git的下载window下git的下载window下git的下载 https://git-scm.com/download/win https://git-sc ...

  5. 异常Exception分类

    1:编译时被检测异常:只要有是Exception和其子类都是,除了特殊子类RuntimeException体系.       这种问题已但出现,希望在编译时进行检测,让这种问题有对应处理方式      ...

  6. Python 全栈开发四 python基础 函数

    一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...

  7. MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析

    列级约束:只针对某一个字段 表级约束:约束针对2个或2个以上的字段 约束类型是按功能来划分. 外键约束:保持数据一致性,完整性.实现数据表的一对一或一对多的关系.这就是把MySQL称为关系型数据库的根 ...

  8. 编辑器source insight,sublime,编码 utf-8和 GB2312

    source insight中,想要UTF-8的中文字符正常显示的话,目前没有直接支持的方法. 暂时只能通过将原UTF-8的格式的文件,转换为本地ANSI编码(此处是简体中文,对应的ANSI编码为GB ...

  9. centos7.x docker安装及配置,持续更新

    1. 安装docker-ce [root],ce为docker社区版,免费,ee版为企业版,收费 列出所有已安装docker # rpm -qa | grep docker 删除已安装docker # ...

  10. iOS 设计模式-NSNotificationCenter 通知中心

    通知介绍 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以向通知中心发布通知(NSNotification),描述 ...