c# – “If”条件是否比?和铸造

前端之家收集整理的这篇文章主要介绍了c# – “If”条件是否比?和铸造前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下两种相同功能方法 – 一种具有“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-Coallescing Operator – Why Casting?

解决方法

在这种情况下,我总是使用 null-coalescing operator
command.Parameters.AddWithValue("@name",value ?? DBNull.Value);

command.ExecuteScalar() as int? ?? -1;

等等

增加代码可读性,减少分支深度.还专门为数据库相关的场景(如ADO.NET)创建.

猜你在找的C#相关文章