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){// 结果都是True

    Console.WriteLine("一模一样!");

}   

Console.WriteLine("".Equals(string.Empty));// 结果都是True

Console.WriteLine(object.ReferenceEquals(string.Empty, ""));// 结果都是True

既然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未指向任何对象。

转载自:https://www.cnblogs.com/fanyong/archive/2012/11/01/2750163.html

String.Empty、string=”” 和null的区别相关推荐

  1. NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别

    Navicat mysql 建表字段 默认值.empty string.空白.NULL 的区别 总结在最后,没啥干货 简单测试了4种类型 bigint tinyint varchar char 单引号 ...

  2. java isempty用法_Java String 的 isEmpty() 与 null 与 区别解析

    问:简单说说 String 的 isEmpty() 与 null 与 "" 的区别? 答: public class Test { public static void main( ...

  3. string.Empty和null三者的区别

    本文来讨论"",string.Empty和null三者到底有什么区别 这是一个及其常见的问题,网上已经有关于这个问题的很多讨论.但是我觉得都是不求甚解,有一些还是在误导别人.下面我 ...

  4. C#中的DBNull、Null、String.Empty和“”

    null可赋值任何变量,将变量置为空  DBNull只用于DataRow对象,表示数据库中的空值  String.Empty是0长度字串  Convert.IsDBNull判断是否为DBNull DB ...

  5. String.Empty和的区别

    1.共同点 Empty是string类中的一个静态的只读字段,他的定义 public static readonly String Empty = ""; string.Empty ...

  6. string empty java,在C#中,我应该使用string.Empty还是String.Empty或“”来初始化字符串?...

    在C#中,我想用一个空字符串初始化一个字符串值. 我应该怎么做? 正确的方法是什么,为什么? string willi = string.Empty; 要么 string willi = String ...

  7. NULL,,String.Empty三者在C#中的区别

    (1)NULL null 关键字是表示不引用任何对象的空引用的文字值.null 是引用类型变量的默认值.那么也只有引用型的变量可以为NULL,如果int i=null,的话,是不可以的,因为Int是值 ...

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

    C#中的空值的判断较麻烦,不象在VB6中那么简单,这些各种空值的判断和理解对不熟悉的人来说,可能很麻烦,现就我在使用过程中的一点体会和大家共同分享. (1)NULL null 关键字是表示不引用任何对 ...

  9. Mysql 数据库默认值选 ‘‘“ 、Null和Empty String的区别

    Mysql 数据库默认值选 ''" .Null和Empty String的区别 1:空值('')是不占用空间的 2: MySQL中的NULL其实是占用空间的.官方文档说明: "NU ...

  10. String.Empty,NULL和的区别

    string.Empty不分配存储空间       ""分配一个长度为空的存储空间          所以一般用string.Empty 为了以后跨平台,还是用string.emp ...

最新文章

  1. oracle11g dataguard windows,Oracle11g 搭建DataGuard(笔记)
  2. java 科学计算法
  3. boost::hana::replace_if用法的测试程序
  4. 异步提交表单插件jquery.form.min.js的使用实例
  5. 闲谈.NET中的类型和访问修饰符
  6. java学习(60):java最终类(了解)
  7. ASP.NET2.0 GridView小技巧汇粹 (转)
  8. 「首席看业务架构」商业模式画布
  9. Android下DLAN中DMS模块的实现
  10. 脑电时频分析I:谱分析
  11. 利用nat123解决微信公众号对接服务器必须为80端口的问题
  12. ReadHub android版
  13. 从小米5看雷军式“互联网思维”的黄昏
  14. 总结:VC小知识!(网上找的)
  15. ChatGPT一战封神,和它聊完后,我更想躺平了
  16. 2D 游戏工具系列:unity自带Tilemap和地图编辑器Tiled的基本使用以及Super Tiled2Unity如何导入tmx到Unity中(2)
  17. 八皇后问题。。。。。。
  18. 每日一道Leetcode -网格矩阵中的路径相关系列【动态规划|路径中(不)含值|有无障碍物|最小路径和】
  19. py225基于python的家政管理系统设计
  20. 记一次apple实体店耳机更换

热门文章

  1. Java内存泄漏检测工具 JRockit Memory Leak Detector
  2. AD学习笔记(二)原理图库以及原理图绘制
  3. 后台实现查找附近的人接口
  4. IT人士如何提高软件下载的速度
  5. 数据库原理与应用(何玉洁 第四版)第六章课后题答案
  6. android高仿ios11系统,安卓仿苹果iOS11主题APP
  7. 适合普通人的基金投资研究工具之:且慢与基金组合
  8. 证书与签名(一):数字签名是什么
  9. re.match()到底会返回什么?
  10. Feignclient 400解决方法