【发布时间】:2012-12-04 08:01:04
【问题描述】:
对于相同的功能,我有以下两种方法 - 一种使用“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);
更新
根据回答,以下是??的好处
- 提高了可读性
- 减少程序流的分支深度(降低圈复杂度)
注意:转换为对象的成本可以忽略不计。
参考
【问题讨论】:
-
我会留下
null-col-op、performance和casting标签。
标签: c# performance casting null-coalescing-operator