短絡評価:
int dealId;
DateTime createdOn;
bool isValid = int.TryParse(strArr[0], out dealId)
&&
DateTime.TryParse(strArr[1], out createdOn)
&&
tmp.Add(new BookmarkedDeal(userId, dealId, createdOn));
(上記では、ステートメントは短絡します。つまり、用語がfalseと評価されるとすぐに評価が停止します)
さらに、失敗する可能性が最も高いものが最初に来るように検証を注文することができます...その後、他のパスを探索しないことで、検証をより迅速に実行できます。(時期尚早の最適化の良い例です...しかし、各用語の実行に時間がかかる可能性がある場合は、覚えておく価値があります)。
================================================== ==============================
それを行う2つの代替方法。各用語を評価し、評価のいずれかがfalseの場合はisValid=falseを記録します。
論理積(&&)の使用:
(前のisValidがfalseの場合に短絡を回避するために、式の右側に「&& isValid」を配置することが重要です)。
int dealId;
DateTime createdOn;
bool isValid = int.TryParse(strArr[0], out dealId);
isValid = DateTime.TryParse(strArr[1], out createdOn) && isValid;
isValid = tmp.Add(new BookmarkedDeal(userId, dealId, createdOn)) && isValid;
ビットごとのAND(&)の使用:
int dealId;
DateTime createdOn;
bool isValid = int.TryParse(strArr[0], out dealId)
&
DateTime.TryParse(strArr[1], out createdOn)
&
tmp.Add(new BookmarkedDeal(userId, dealId, createdOn));