我有以下两种相同功能的方法 – 一种具有“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);
UPDATE
根据答案,以下是
>增加可读性
>程序流的分支延迟减少(减少的循环复杂度)
注意:铸造成本可以忽略不计.
参考
解决方法
在这种情况下,我总是使用
null-coalescing operator:
command.Parameters.AddWithValue("@name",value ?? DBNull.Value); command.ExecuteScalar() as int? ?? -1;
等等