C# 判断字符串为空的4种方法及效率
在程序开发过程中,少不了要处理字符串,并且常常要判断字符串是否为空,通常有哪些判断方法,以及不同方法的效率又怎么样?
在 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种方法及效率的更多相关文章
- C#判断字符串为空的几种方法和效率判断
C#判断字符串为空的几种方法和效率判断 string定义 1.1 string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间.1.2 ...
- C# 判断字符串为空有哪几种方法
Length法:);Empty法:bool isEmpty = (str == String.Empty);General法:bool isEmpty = (str == ""); ...
- PHP中判断变量为空的几种方法
判断变量为空,在许多场合都会用到,同时自己和许多新手一样也经常会犯一些错误, 所以自己整理了一下PHP中一些常用的.判断变量为空的方法. 1. isset功能:判断变量是否被初始化本函数用来测试变量是 ...
- java中判断字符串是否相等有两种方法:
1.用“==”运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b="abc",那么a==b将返回true.这是 ...
- PHP中判断变量为空的几种方法小结
isset 主要用来判断变量是否被初始化过empty 可以将值为 "假"."空"."0"."NULL"." ...
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s));方法二: ...
- Linux shell 判断字符串为空等常用命令
1.判断字符串为空 if [ -z "$str" ]; then echo "empty string" fi 2.判断文件是否存在 if [ -f /home ...
- js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)
js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...
- jQuery 判断checkbox是否被选中 4种方法
下午写JS验证,有一个需求需要判断 checkbox是否被选择,查阅相关资料后,总结以下4种方法,分享给大家. <!DOCTYPE html> <html lang="en ...
随机推荐
- 机器学习概念之特征处理(Feature processing)
不多说,直接上干货! 肯定也有不少博友,跟我一样,刚开始接触的时候,会对这三个概念混淆. 以下是,特征处理.特征提取.特征转换和特征选择的区别! 特征处理主要包含三个方面:特征提取.特征转换和特征选择 ...
- Windows下降权MYSQL和apche的运行级别(普通用户权限运行)
1.MYSQL的降权运行 新建立一个用户比如mysql net user mysql microsoft /add net localgroup users mysql /del 不属于任何组 ...
- [转]自定义ASP.NET MVC JsonResult序列化结果
本文转自:http://blog.163.com/luckcq@yeah/blog/static/17174770720121293437119/ 最近项目中前台页面使用EasyUI的jQuery插件 ...
- P1936 水晶灯火灵
题目描述 ,刚好符合以下③条规则:①m.n∈{1,2,……,k}②(n²-m*n-m²)²=1③m.n为整数. 输入输出格式 输入格式: Only one:k.(What?还是失败?) 输出格式: 共 ...
- 数字(number)
数字(number) Time Limit:2000ms Memory Limit:128MB 题目描述 LYK定义了一个新的计算. 具体地,一开始它有两个数字a和b. 每一步,它可以将b增加1, ...
- 字符串、数组、json
一.字符串 string 1.字符串的定义: (1).var s="haha"; (2).var s=new string ("hello") 对象形式定义 2 ...
- 如何优化APK的大小
项目使用AS打出的包明显比Eclipse打出的包要大一些,还是蛮费解.于是百度了一翻, 原来Eclipse使用的proguard能够遍历所有的java代码,把无用的代码去掉才生成dex文件,同 时对r ...
- RHEL5.8上SAMBA源码修改打包安装流程
之前一直使用系统自带的SAMBA,近期需要对SAMBA代码做一些修改,然后还是打算用RPM包的方式来安装部署. 这个流程本身不复杂,在这里记录下来,免得在另外写说明文档. 关键词:RHEL5.8, s ...
- javaweb系列-关于HttpSessionListener的sessionDestroyed什么时候触发
根据书本写了下面这个监听器,然后开始调试,打开一个浏览器来访问该网页,可以正常触发sessionCreated,然后关闭浏览器,发现没有触发sessionDestroyed,然后我怀疑是不是这个监听器 ...
- _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用
_ 下划线 vue mixins 混入 变量前有下划线 变量不起作用