У меня есть два подхода для одинаковой функциональности: один с условием "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
На основе ответов следуют преимущества ??
- Повышенная читаемость
- Уменьшение разветвленности потока программы (уменьшенная циклическая сложность)
Примечание. Стоимость литья в качестве объекта незначительна.
ССЫЛКА