对于相同的功能,我有以下两种方法 - 一种带有“if”条件,一种带有“?? 和铸造”。哪种方法更好?为什么?
代码:
Int16? reportID2 = null;
//Other code
//Approach 1
if (reportID2 == null)
{
command.Parameters.AddWithValue("@report_type_code", DBNull.Value);
}
else
{
command.Parameters.AddWithValue("@report_type_code", reportID2);
}
//Approach 2
command.Parameters.AddWithValue("@report_type_code", ((object) reportID2) ?? DBNull.Value);
更新
根据答案,以下是 ??
- 提高可读性
- 减少程序流的分支深度(降低圈复杂度)
注意:作为对象的铸造成本可以忽略不计。
参考