空合并或三元运算符偏好?

Null-coalesing or ternary operator prefernce?

cmd.Parameters.Add("p_Shift_Id", OracleDbType.Varchar2).Value = p_Shift_Id;

p_Shift_Id 可能为空。如果它为 null,那么我想使用 DBNull.Value。如果它不为空,则为它包含的值。

最好的方法是什么?我宁愿不使用

 if(p_Shift_Id == null)
 {
     cmd.Parameters.Add("p_Shift_Id", OracleDbType.Varchar2).Value = DBNull.Value;
 } else {
     cmd.Parameters.Add("p_Shift_Id", OracleDbType.Varchar2).Value = p_Shift_Id;
 }

p_Shift_Id 转换为 object,然后使用 Null-Coalescing 运算符,如下所示:

cmd.Parameters.Add("p_Shift_Id", OracleDbType.Varchar2).Value = (object)p_Shift_Id ?? DBNull.Value;