(1)先了解几个与空类型相关的关键字和对象

 Null :

  关键字表示不引用任何对象的空引用,它是所有引用类型变量的默认值,在2.0版本之前也就只有引用变量类型可以为null,如(string a=null)但在c# 2.0版本之后,Net也引入了可以为Null的值类型,但变量在定义的时候方式有所不同,如:int ? a=null。详细看http://msdn.microsoft.com/zh-cn/library/1t3y8s4s.aspx。不在内存中开辟内存地址,可用于引用是否可用。

 DBNULL:

  是一个唯一类,也就是说这种类型的实例只有一个,即DBNull.Value。主要用来指示数据库中的字段值为空(null)时在.Net中映射的值,另外还可以用于在 COM Interop 中区分 VT_NULL 变量(与空对象关联)和 VT_EMPTY 变量(与 DBNull.Value 实例关联)。详细看http://msdn.microsoft.com/zh-cn/library/system.dbnull%28v=vs.80%29.aspx。它应该有固定不变的内存。

  String.Empty和"":

  这两个都表示空字符串,空字符串是一个特殊的字符串,所以它依然是一个字符串实例,也就是说它在内存中依然分配了明确的地址。

Convert.IsDBNull():返回有关指定对象是否为 DBNull 类型的指示。即是用来判断对象是否为DBNULL的。其返回值是True或Flase。主要用于和数据库操作相关的值判断。

(2)各种的使用方法和效率

对象的判断:使用Null可用于任何引用变量是否为空的判断,是最基本的对象为空判断方式,在和数据库相关的操作中使用DBNull.vaule或者Convert.IsDBNUll。

字符串判断:string在C#中也是一个引用类型,但其又具有一定的特殊性。我们在使用string时,往往会把“变量值为空的字符串对象”和“变量值为空字符的字符串对象”搞混。所以经常会因为对此理解不深引起好多问题,因为string是我们开发过程使用最频繁的类型之一,对于字符串的判断方法,通过对网上资料的整理和自己的实际操作经验现总结如下:

 string str 

  1:string.IsNullOrEmpty == str  这种方式不但一次性能判断"空的字符串变量",还能判断“值为空字符串的变量”,并且还可以让代码简洁美观。判断的效率也不算低。

  2:str.Length == 0 这种方式,不推荐使用。这种判断方式的执行效率最高,但要使用它你必须保证字符串不null,如果为null就会报出异常,

  3.str == string.Empty 或 str == "" 这两种方式,不推荐使用,他只能判断“值为空字符串”的字符串变量,而且效率比较低

  4.str == null 这种方式也不怎么推荐,原因和3一样。

c#中判断对象为空的几种方式(字符串等)的更多相关文章

  1. Javascript 中判断对象为空

    发现了一个巧妙的实现: 需要检查一个对象(Object)是否为空,即不包含任何元素.Javascript 中的对象就是一个字典,其中包含了一系列的键值对(Key Value Pair).检查一个对象是 ...

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

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

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

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

  4. python中判断实例可迭代地几种方式

    1. 利用 __iter__内建属性 if hasattr(obj, '__iter__') : print 'iterable' 这种方法不能检测字符串,如:hasattr('', '__iter_ ...

  5. js中判断对象具体类型

    大家可能知道js中判断对象类型可以用typeof来判断.看下面的情况 <script> alert(typeof 1);//number alert(typeof "2" ...

  6. js中判断对象是否存在

    s中判断对象是否存在,写法有很多种: 第一种:if (!myObj) { var myObj = { }; }第二种:var global = this;  if (!global.myObj) {  ...

  7. JavaScript中判断对象是否属于Array类型的4种方法及其背后的原理与局限性

    前言 毫无疑问,Array.isArray是现如今JavaScript中判断对象是否属于Array类型的首选,但是我认为了解本文其余的方法及其背后的原理与局限性也是很有必要的,因为在JavaScrip ...

  8. Struts2中获取HttpServletRequest,HttpSession等的几种方式

    转自:http://www.kaifajie.cn/struts/8944.html package com.log; import java.io.IOException; import java. ...

  9. C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌

    1.  IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...

随机推荐

  1. crm plugin 未能加载文件或程序集“xxxx,”或它的某一个依赖项。系统找不到指定的文件。

    plugin运行出错. 1  plugin文件如果是 注册到disk,应该是注册到 C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembl ...

  2. flask-sqlalchemy分表解决方案

    转自:http://ju.outofmemory.cn/entry/61448 关键词: flask-sqlalchemy, sqlalchemy, 分表,分库 大型系统.海量数据肯定涉及到分库分表这 ...

  3. [SQJ]sql如何实现类似统计的功能

    假设mssql2000中, 有如下表: table Class class_No course_Name ----------------------------------- chinese mat ...

  4. iOS中FMDB的使用【单例】

    DYDB.h Objective-C 12345678910111213141516 #import <Foundation/Foundation.h> #import <FMDB/ ...

  5. ubuntu14.04配置Hive1.2.1

    1.添加环境变量:vi ~/.bashrc #HIVE VARIABLES START export HIVE_HOME=/usr/local/hive-1.2.1 export PATH=$PATH ...

  6. MS文件与路径的一些方法记录

    一,路径相关 String path1 = System.IO.Directory.GetCurrentDirectory(); MessageBox.Show("获取应用程序的当前工作目录 ...

  7. Arch Linux 休眠到文件

    创建文件: # fallocate -l 4G /swapfile # chmod 600 /swapfile # mkswap /swapfile# swapon /swapfile 编辑/etc/ ...

  8. NSUrl 的常见用法

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/s?tn=baiduhome_pg&bs=NSRUL&f=8 ...

  9. OC基础(21)

    Foundation框架介绍 NSString基本概念 字符串读写 字符串比较 字符串搜索 字符串截取 字符串替换 字符串与路径 字符串与基本数据类型转换 *:first-child { margin ...

  10. python写入中文到文件乱码的问题

    file = open(filename,'a',encoding='utf8')#指定写入编码为utf8,否则写入中文会乱码