c#中判断对象为空的⼏种⽅式(字符串等)
(1)先了解⼏个与空类型相关的关键字和对象
Null : 关键字表⽰不引⽤任何对象的空引⽤,它是所有引⽤类型变量的默认值,在2.0版本之前也就只有引⽤变量类型可以为null,如(string a=null)但在c# 2.0版本之后,Net也引⼊了可以为Null的值类型,但变量在定义的时候⽅式有所不同,如:int ? a=null。详细看。不在内存中开辟内存地址,可⽤于引⽤是否可⽤。
DBNULL:是⼀个唯⼀类,也就是说这种类型的实例只有⼀个,即DBNull.Value。主要⽤来指⽰数据库中的字段值为空(null)时在.Net中映射的值,另外还可以⽤于在 COM Interop 中区分 VT_NULL 变量(与空对象关联)和 VT_EMPTY 变量(与 DBNull.Value 实例关联)。详细看。它应该有固定不变的内存。
String.Empty和"":这两个都表⽰空字符串,空字符串是⼀个特殊的字符串,所以它依然是⼀个字符串实例,也就是说它在内存中依然分配了明确的地址。
Convert.IsDBNull():返回有关指定对象是否为类型的指⽰。即是⽤来判断对象是否为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⼀样。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论