先来一段代码:
string str = null; Console.WriteLine(str);
这是许多人定义空字符串的习惯方法,甚至包括在给TextBox的Text属性赋值时也用的上面这种赋值null导致空引用的方式。
尽管在大多数时候,通过string str = null这样的赋值方式,可以实现获得空字符串的等效结果。但是,这样的做法是很不严谨的,在语义上也是不准确的,特别是在大量的数据库应用中,极易引发DBNull的异常和漏洞。
今天,在Visual Studio 2010强大到已经可以为整个数据库建立实体模型映射的时候,DBNull的陷阱却依然和当初只有类型化DataSet可用的时候一样,依旧是困扰着我们的一大问题。尤以string类型的变量被习惯性地置为null占多。我们经常会在不经意间,由于置空的string引用而触发DBNull相关的异常。
我的建议是,多采用下面的方式去生成空字符串、判断是否空字符串。.NET Framework为string提供这些属性和方法,并不是没有意义的摆设。null与string.Empty并不同!
string str = string.Empty; string.IsNullOrEmpty(str);