同じ機能に対して次の2つのアプローチがあります。1つは「if」条件を使用し、もう1つは「??」を使用します。とキャスティング」。どちらのアプローチが良いですか?なぜですか?
コード:
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);
アップデート
回答に基づいて、以下の利点があります ??
- 読みやすさの向上
- プログラムフローの分岐深度の減少(循環的複雑度の減少)
注:オブジェクトとしてキャストするコストはごくわずかです。
参照