在C#中进行字符串操作之前,是否有建议的最佳实践来检查NULL和空(其他任何东西?)?具体来说,我需要在字符串上调用Replace和Trim,但发现在NULL字符串上执行此操作会抛出。那么有比以下更好的格式吗?
tmp =(tmp == null)? null:tmp.Replace(" TOKEN","")。修剪();
答案 0 :(得分:8)
在.NET 4.0或更高版本中使用String.IsNullOrWhitespace
,或在.NET 3.x中使用String.IsNullOrEmpty
。
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
等)访问数据库,那么您应该检查{ {1}}用于表示SQL DBNull
值,它们与C#中的NULL
不同:
null
或者:
using( IDataReader rdr = command.ExecuteReader() ) {
while( rdr.Read() ) {
String value = rdr.IsDBNull( someColumnIndex ) ? null : rdr.GetString( someColumnIndex );
}
}