我的代码基本上在一种情况下分配变量,否则在另一种情况下分配。有更简洁的方式更有效吗?
是的,不要占用这么多行。或者这是最好的方式? if (ViewBag.Date != RoomBooking.StartDateTime.Date || ViewBag.DayPlannerStartTime * 12 > (Int32)RoomBooking.StartDateTime.TimeOfDay.TotalMinutes / 5)
{
StartBlock = ViewBag.DayPlannerStartTime * 12;
}
else
{
StartBlock = ((Int32)RoomBooking.StartDateTime.TimeOfDay.TotalMinutes / 5);
}
答案 0 :(得分:1)
也许这个(它可以说是更整洁,但绝对具有相同的效率):
StartBlock = (ViewBag.Date != RoomBooking.StartDateTime.Date || ViewBag.DayPlannerStartTime * 12 > (Int32)RoomBooking.StartDateTime.TimeOfDay.TotalMinutes / 5)
? ViewBag.DayPlannerStartTime * 12
: ((Int32)RoomBooking.StartDateTime.TimeOfDay.TotalMinutes / 5);
编辑:您也可以略微优化条件。我怀疑你的DayPlannerStartTime
以秒表示,如果我是对的,你可以用以下方式重写比较(我只是将>
运算符的两个操作数除以12,{{1}除以5 * 12成为TotalMinutes
):
TotalHours
答案 1 :(得分:1)
是的,您可以使用?: operator创建一个表达式,如果条件为真,将计算第一个表达式,或者第二个表达式:
// condition ? first_expression : second_expression;
var value = (something that is true or false) ? value if true : value if false;