在程序开发过程中,少不了要处理字符串,并且常常要判断字符串是否为空,通常有哪些判断方法,以及不同方法的效率又怎么样?

  在 C# 中,通常有三种判断字符串是否为空的方法,下面分别探讨。

  1、str.Length == 0

  使用 str.Length == 0,在三种方法中效率是最高的,但容易产生异常。当字符串为空的时候就会产生异常,如

  string str; 或者 string str = null;

  if(str.Length == 0) //产生异常

  此时,就会产生对象不能为空的异常。

  如果事先初始化 str,如:

  string str = "a-购物、商场打折";

  if(str.Length == 0) //不产生异常

  此时,则不会产生异常。因此,如果事先可以断定字符串在任何情况下都不为空,可以用此方法,从而提高效率;反之,不建议使用。

  2、str == string.Empty 或 str == ""

  这两种方法效率比 str.Length == 0 稍低一点,但字符为空时不会产生异常。所以,在事先不初始化变量,或不能断定变量在程序运行过程中一定不为空,可以使用此方法。

  可能细心的你会问,str == string.Empty 和 str == "",哪个效率会更高一点?记得在《C# 多个字符串连接的效率》一文中具体探讨过,有兴趣可以看一看,不过在此可以先告诉你:str == string.Empty 略高一点

  3、str == string.IsNullOrEmpty

  Null 通常用来判断对象是否为空,所以这个方法既可以判断字符串(str)这个对象是否存在,也可以判断字符串为空(empty 或 "")。它与 str == string.Empty 比较,效率高低如何呢?举例如下:

  1)字符串为空时

  string str = null;
  if (str == string.Empty)
  {
  }

  if (string.IsNullOrEmpty(str))
  {
  }

  2)字符串不为空时

  string str = "a-购物、商场打折";
  if (str == string.Empty)
  {
  }

  if (string.IsNullOrEmpty(str))
  {
  }

  通过执行比较,两种情况,string.IsNullOrEmpty(str) 都比 str == string.Empty 稍快。

  当然,这种字符串为空的判断方法,在平常的编程过程中,效率差别是非常小,如果不是十分复杂的情况下,可以忽略。但尽量使用效率高的方法。

C# 判断字符串为空的4种方法及效率的更多相关文章

  1. C#判断字符串为空的几种方法和效率判断

    C#判断字符串为空的几种方法和效率判断 string定义 1.1 string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间.1.2 ...

  2. C# 判断字符串为空有哪几种方法

    Length法:);Empty法:bool isEmpty = (str == String.Empty);General法:bool isEmpty = (str == ""); ...

  3. PHP中判断变量为空的几种方法

    判断变量为空,在许多场合都会用到,同时自己和许多新手一样也经常会犯一些错误, 所以自己整理了一下PHP中一些常用的.判断变量为空的方法. 1. isset功能:判断变量是否被初始化本函数用来测试变量是 ...

  4. java中判断字符串是否相等有两种方法:

    1.用“==”运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b="abc",那么a==b将返回true.这是 ...

  5. PHP中判断变量为空的几种方法小结

    isset  主要用来判断变量是否被初始化过empty  可以将值为 "假"."空"."0"."NULL"." ...

  6. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: ...

  7. Linux shell 判断字符串为空等常用命令

    1.判断字符串为空 if [ -z "$str" ]; then echo "empty string" fi 2.判断文件是否存在 if [ -f /home ...

  8. js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)

    js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...

  9. jQuery 判断checkbox是否被选中 4种方法

    下午写JS验证,有一个需求需要判断 checkbox是否被选择,查阅相关资料后,总结以下4种方法,分享给大家. <!DOCTYPE html> <html lang="en ...

随机推荐

  1. Java 中 i++和++i的区别

    public class Test{ public static void main(String [] args){ int i = 1; int s = ++i; int x= i++; Syst ...

  2. PowerShell~发布你的mvc网站

    通过使用ps加上msbuild可以方便的编译你的.net应用程序,并且可以把它发布到你的磁盘上,部署非常方例! 我们在c盘添加一个hello网站,解决方案名是hello.sln,它的网站是hello. ...

  3. Spring Boot 注册 Servlet 的三种方法,真是太有用了!

    本文栈长教你如何在 Spring Boot 注册 Servlet.Filter.Listener. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spr ...

  4. ios 设置head请求头,自定义head, read response header

    AFHTTPSessionManager *manger = [AFHTTPSessionManager manager]; manger.securityPolicy = [AFSecurityPo ...

  5. findFile的用法

    ===============================================   @echo off   echo **No Options:   for /f %%a in (&q ...

  6. TFS2010升级至TFS2013完全指南(更换服务器)

    一.背景:         公司已使用tfs2010很长时间,目前随着公司的发展,项目越来越少,而产品越来越多,采用的开发模式,也逐渐从瀑布式.迭代式转向敏捷开发.为了更好的支持产品研发,决定将tfs ...

  7. 为sublime Text3 安装插件JS Format

    1. 安装package control 菜单 View - Show Console 或者 ctrl + ~ 快捷键,调出 console.将以下 Python 代码粘贴进去并 enter 执行,不 ...

  8. 再遇BGP

    第一次遇到BGP,是在大学的课堂上,现在再次看到它,有种深深的无奈,我只记得它的名字,忘记了它的样子. 那么什么是BGP呢? 翻译过来就是边界网关协议,一个用来网络数据进行选路的路由协议,使用TCP协 ...

  9. sqlite3:深入理解sqlite3_stmt 机制

    我们在使用sqlite3的过程中,涉及到批量操作时(批量插入.批量读...),总会遇到 sqlite3_stmt这个数据类型,按照官方解释说法是这样的:sqlite3_stmt是C接口中“准备语句对象 ...

  10. Android主题更换换肤

    知识总览android主题换肤通常借助LayoutInflater#setFactory实现换肤. 换肤步骤: 通过解析外部的apk压缩文件,创建自定义的Resource对象去访问apk压缩文件的资源 ...