短路评估:
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));
(在上面的语句中,一旦一个术语评估为假,即停止评估)
此外,您可以订购验证,以便最有可能失败的事情首先出现......然后您可以通过不探索其他路径来更快地执行验证。(过早优化的一个很好的例子......但如果每个术语都可能需要一段时间才能执行,那么值得牢记)。
==================================================== ===============================
两种替代方法,评估每个术语并记录 isValid=false 如果任何评估为假。
使用逻辑与 (&&):
(将“&& isValid”放在表达式的右侧很重要,以避免在前一个 isValid 为 false 时发生短路)。
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;
使用按位与 (&):
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));