C#中string.Empty ,"" , null 区别
引言
String类型作为使用最频繁的类型之一,相信大家都非常熟悉,对于string赋予空值,通常有以下三种方式:
String str1=null;
String str2=””;
String str3=string.Empty;
那么问题来了,这三种赋值方式到底有何区别呢?
""和string.Empty比较
网上有种说法:””会在托管堆分配一个长度为0的空间,string.Empty不分配空间。
真的这样吗?
事实胜于雄辩,下面我们通过代码来验证这个观点,具体如下:

其中用到string的IsInterned方法,该方法是用来获取string的引用,即堆中的值。
上述代码执行的结果为True,由此可见其实””和string.Empty都会在堆中分配空间。
当初,少不更事,轻易的相信这种说法好多年,凡事还是要追根究底的好。
null和string.Empty比较
既然知道string.Empty和””实际上都会在堆上分配空间,那就不难理解和null的区别了,将null赋予给字符串,只是在栈上开辟了一个空间,而并没有真正指向堆。
参考:
http://blog.csdn.net/henulwj/article/details/7830615
C#中string.Empty ,"" , null 区别的更多相关文章
- C# 中 string.Empty、""、null的区别
原文C# 中 string.Empty."".null的区别 一.string.Empty 和 "" 1.Empty是string类中的一个静态的只读字段,它是 ...
- C#中string.Empty、""和null 之间的区别
1.C#中string.Empty.""和null 之间的区别 (http://blog.csdn.net/henulwj/article/details/7830615)
- String.Empty,NULL和""的区别
String.Empty,NULL和""的区别 string.Empty就相当于"" 一般用于字符串的初始化 比如: string a; Console.Wri ...
- asp.net(c#)中String.Empty、NULL、"" 三者到底有啥区别和联系?
开门见山,首先看下面代码,你认为结果分别是什么? string str = string.Empty; string str1 = ""; string str2 = null; ...
- C#中String.Empty,“”,NULL的区别
一.String.Empty String类的静态只读字段.定义如下: public static readonly string Empty; 二.“” 被赋值为“”的字符串变量,会在栈上保存一个地 ...
- C#中String.Empty、NULL与""三者的区别
String.Empty和""是一样的,都是空,习惯用string.empty. Null和他们就有区别了,就是没有值,也没分配地址,此处可以理解成什么都没有.
- C#中string.Empty和""、null的区别
string.Empty是string类的一个静态常量,而""则表示一个空字符串. string是一种特殊的引用类型,它的null值则表示没有分配内存. 使用ILSpy反编译Str ...
- C# 中 string.Empty、""、null的差别
一.string.Empty 和 "" 原文1 原文2 1. ...
- string.empty , "" , null 以及性能的比较
一:这种结论,个人觉得仍然存疑 http://www.cnblogs.com/wangshuai901/archive/2012/05/06/2485657.html 1.null null 关 ...
随机推荐
- topcoder SRM 591 DIV2 TheArithmeticProgression
#include <iostream> #include <cstdlib> using namespace std; class TheArithmeticProgressi ...
- android之打开网页
首先改写strings.xml文件 代码如下: <resources> <string name="app_name">Intent应用</strin ...
- [转]支付宝接口程序、文档及解读(ASP.NET)
本文转自:http://www.cnblogs.com/blodfox777/archive/2009/11/03/1595223.html 最近需要为网站加入支付宝的充值接口,而目前关于支付宝接口开 ...
- CSS与JavaScript文件的位置
1.CSS 尽量放置在head标签中. 原因: 避免浏览器重新渲染: 避免阻塞JS文件的执行. 注:CSS选择器的解释顺序是 从右向左 的,所以尽量减少选择器的层级. 2.JS 尽量放置在</b ...
- 点击li标记中的<a>标记改变li背景图片怎样实现
<div class="nav"><ul><li id="li1" class="dianji" onclic ...
- Javascript 笔记与总结(2-10)删除节点,创建节点
[删除节点] 步骤: ① 找到对象 ② 找到他的父对象 parentObj ③ parentObj.removeChild(子对象); [例] <!DOCTYPE html> <ht ...
- How To Ask Questions The Smart Way
How To Ask Questions The Smart Way Eric Steven Raymond Thyrsus Enterprises <esr@thyrsus.com> R ...
- SHELL 中的重定向和管道
1. 什么叫重定向将输入或输出重新指定到别的位置. 2. 重定向输出2.1.命令执行数据流文件/设备---- 标准输入 -->命令 --- 标准输出 -->文件/设备 ...
- jQuery Questions:Front-end Developer Interview Questions
Explain "chaining". Chaining allows us to run multiple jQuery methods (on the same element ...
- NSQ部署
一. 简介 NSQ主要有三个主要程序和一个Web服务程序: nsqd:是守护进程,接收,缓存,并投递消息给客户端 nsqlookupd:是一个守护进程,为消费者提供运行时发现服务,来查找指定 ...