在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();
}
Run Code Online (Sandbox Code Playgroud)
C#6.0添加了?.操作符,它是"null-safe",它只返回null并跳过导航表达式的其余部分:
String temp = ...
temp = temp?.Replace("TOKEN", "").Trim();
Run Code Online (Sandbox Code Playgroud)
正如我在我的评论说,如果你使用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 );
}
}
Run Code Online (Sandbox Code Playgroud)
要么:
DataTable table = ...
foreach( DataRow row in table.Rows ) {
if( row["someColumn"] != DBNull.Value ) {
String value = (String)row["someColumn"];
// do stuff
}
}
Run Code Online (Sandbox Code Playgroud)