[转载]String.Empty、string=”” 和null的区别
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("一模一样!");} // 结果都是TrueConsole.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的区别的更多相关文章
- C# 中 string.Empty、""、null的区别
原文C# 中 string.Empty."".null的区别 一.string.Empty 和 "" 1.Empty是string类中的一个静态的只读字段,它是 ...
- C#中String.Empty,“”,NULL的区别
一.String.Empty String类的静态只读字段.定义如下: public static readonly string Empty; 二.“” 被赋值为“”的字符串变量,会在栈上保存一个地 ...
- C#中string.Empty和""、null的区别
string.Empty是string类的一个静态常量,而""则表示一个空字符串. string是一种特殊的引用类型,它的null值则表示没有分配内存. 使用ILSpy反编译Str ...
- C# 中 string.Empty、""、null的差别
一.string.Empty 和 "" 原文1 原文2 1. ...
- 重学c#系列——string.empty 和 "" 还有null[二十]
前言 简单整理一下string.empty 和 "" 还有 null的区别. 正文 首先null 和 string.empty 还有 "" 是不一样的. nul ...
- C#中string.Empty、""和null 之间的区别
1.C#中string.Empty.""和null 之间的区别 (http://blog.csdn.net/henulwj/article/details/7830615)
- C# null,string.Empty,"",DBNull 的区别
[null] null 在C# 中是一个关键字,表示不引用任何对象的空引用的文字值. null 是引用类型变量的默认值. 普通值类型不能为 null. null 在 VS 中定位不出来具体是怎么定义的 ...
- 转:String.Empty、string=”” 和null的区别
原文地址:http://www.cnblogs.com/fanyong/archive/2012/11/01/2750163.html String.Empty是string类的一个静态常量: Str ...
- String.Empty、string=”” 和null的区别
String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: 1 2 3 4 5 6 7 8 9 10 1 ...
随机推荐
- 手把手教你用 Git(转)
转自:http://blog.jobbole.com/78960/ 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统, ...
- dataframe操作
1.去除重复项drop_duplication #去除重复项drop_duplication import pandas as pd df = pd.DataFrame({"col1&quo ...
- jenkins基于gradle打包说明
gradle.proerties文件中添加下面配置会更快 org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfM ...
- ios9 适配的坑
http://www.cocoachina.com/ios/20151016/13715.html
- PHP处理大文件下载
<?php /** * Created by PhpStorm. * User: Kung * Date: 15-10-21 * Time: 下午8:00 */ set_time_limit(0 ...
- iOS 设计模式-NSNotificationCenter 通知中心
通知介绍 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以向通知中心发布通知(NSNotification),描述 ...
- bat运行时自己隐藏黑框,而不是用vbs来调用自己
//autoStart.bat @echo off if "%1" == "h" goto begin mshta vbscript:createobject( ...
- Java之.jdk安装-Windows
jdk安装-windows 1. window + r,然后输入:cmd,打开黑窗口. 2. 分别输入 java -version .javac -version,检查jdk版本信息. 如果javac ...
- JavaScript-年月日转换12小时制
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Ajax三级联动
全国省市县查询 html代码 <!doctype html> <html> <head> <meta charset="utf-8"> ...