使用字符串转换防止Null失败的最佳方法

jth*_*h41 10 c# sql string null parsing

_callReportCode = reader["Call Report Code"].ToString();
Run Code Online (Sandbox Code Playgroud)

我试图处理我调用ToString的对象为NULL的可能性.我将使用上面的语句与几个变量,我不想为每个变量做一个单独的try/catch ...什么是对字符串进行空检查的最佳方法.

其他数据类型我一直这样做:

int.TryParse(reader["Account Number"].ToString(), out _accountNumber);
Run Code Online (Sandbox Code Playgroud)

在这段代码中,"reader"指的是一个SqlDataReader,但对于这个问题并不重要.

Bob*_*son 31

使用null-coalescing运算符:??

callReportCode = (reader["Call Report Code"] ?? "").ToString();
Run Code Online (Sandbox Code Playgroud)

如果在你的领域中的数据DBNull.Value(而不是null),这将仍然工作,因为DBNull.Value没有null,所以??将不被使用,并且DBNull.Value.ToString()"",这是你想要的东西.

  • `(DBNull.Value ??"").ToString()`甚至不编译 (2认同)
  • 不需要道歉,我是犯了这个错误的人. (2认同)

And*_*lil 11

Convert.ToString(reader["Call Report Code"]);
Run Code Online (Sandbox Code Playgroud)

string.Empty如果值为null ,它将返回.

资料来源:http://msdn.microsoft.com/en-us/library/astxcyeh.aspx

更新:它也适用DBNull,我刚刚验证.

更新2:我决定在这里进行更完整的测试,以确保:

DBNull dbNull = null;
DBNull dbNullEmpty = DBNull.Value;
string stringNull = null;
string stringEmpty = string.Empty;

var outcome1 = Convert.ToString(dbNull);//Empty string
var outcome2 = Convert.ToString(dbNullEmpty);//Empty string
var outcome3 = Convert.ToString(stringNull);//NULL
var outcome4 = Convert.ToString(stringEmpty);//Empty string
Run Code Online (Sandbox Code Playgroud)