Есть ли лучший синтаксис для простого, если, присваивая переменную - PullRequest
0 голосов
/ 13 января 2012

У меня есть код, который в основном присваивает переменную в одном случае, а другой - в другом.Есть ли более аккуратный способ, который более эффективен?

Т.е. не занимая столько строк.Или это лучший способ?

 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);
        }

Ответы [ 2 ]

1 голос
/ 13 января 2012

Да, вы можете использовать оператор ?: , чтобы создать отдельное выражение, которое будет вычислять первое выражение, если условие выполнено, или другое выражение:

// condition ? first_expression : second_expression;
var value = (something that is true or false) ? value if true : value if false;
1 голос
/ 13 января 2012

Может быть, это (возможно, аккуратнее, но определенно имеет такую ​​же эффективность):

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, а TotalMinutes разделил на 5 * 12 стал TotalHours):

ViewBag.DayPlannerStartTime > (Int32)RoomBooking.StartDateTime.TimeOfDay.TotalHours
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...