黑马程序员技术交流社区

标题: 判断string类型的对象是否为空? [打印本页]

作者: 徐宏伟    时间: 2012-9-3 17:46
标题: 判断string类型的对象是否为空?
判断字符串变量str是否为空的一下三种方法哪个性能更优:
a、str== " ";
b、str==String.Empty;
c、str.Length==0;
作者: 童兴龙    时间: 2012-9-3 19:09
{:soso_e153:}都没有搞懂,这个判断有什么作用吗?
作者: xwh    时间: 2012-9-3 19:48
str.Length==0
效率更快
1.使用Length来检查一个字符串是否为空。
计算Length时,只需要检查内部数组的长度,不需要字节比较。而字节比较是比直接计算计算要慢很多的
2.在来看看string的一个构造函数
String   (Char[],   Int32,   Int32)   
将   String   类的新实例初始化为由   Unicode   字符数组、该数组内的起始字符位置和一个长度指示的值。
即string对象在本身构造时,就已经有一个参数是长度指示,他对外的表现就是Length
3.我们在来看看String.Empty本质,有一定c++和vb基础的都知道,一个字符串都有一个表示结尾的字节,net环境下也是如此,这个结尾的字节就是String.Empty
4.使用str==String.Empty要比str== " "快速因为String.Empty在内部是个常量

综上:
a、str== " ";
b、str==String.Empty;
c、str.Length==0;
c优于b,b优于a
这是我网上找的,你看一下吧,第一次在黑马论坛回复,以前都是逛论坛,看别人讨论的
作者: 王荟越    时间: 2012-9-14 09:52
str== " ";是对的,千万别写成str=null,null在C#中代表不指向任何值,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2