在C#中进行字符串操作之前,是否有建议的最佳实践来检查NULL和空(其他任何东西?)?具体来说,我需要在字符串上调用Replace和Trim,但发现在NULL字符串上执行此操作会抛出.那么有比以下更好的格式吗?
tmp =(tmp == null)?null:tmp.Replace("TOKEN","").Trim();
使用String.IsNullOrWhitespace
在.NET 4.0或更高版本,或String.IsNullOrEmpty
在.NET 3.x中
String temp = ... if( !String.IsNullOrWhitespace( temp ) ) { temp = temp.Replace("TOKEN", "").Trim(); }
C#6.0添加了?.
操作符,它是"null-safe",它只返回null并跳过导航表达式的其余部分:
String temp = ... temp = temp?.Replace("TOKEN", "").Trim();
正如我在我的评论说,如果你使用ADO.NET(访问数据库DataSet
,DataTable
,IDataReader
,等),那么你应该检查DBNull
这是用来表示SQL NULL
值,它是从不同null
的C#:
using( IDataReader rdr = command.ExecuteReader() ) { while( rdr.Read() ) { String value = rdr.IsDBNull( someColumnIndex ) ? null : rdr.GetString( someColumnIndex ); } }
要么:
DataTable table = ... foreach( DataRow row in table.Rows ) { if( row["someColumn"] != DBNull.Value ) { String value = (String)row["someColumn"]; // do stuff } }