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( "一模一样!" ); } // 结果都是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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
我的联系方式:fanyong@gmail.com
个人独立博客:www.fy98.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架