Подтвердить что ты не робот

Inline IF Statement в С#

Как я напишу выражение Inline IF в моем классе С# Service при настройке моего значения перечисления в соответствии с возвращаемой базой данных?

Например: Когда возвращаемое значение базы данных равно 1, установите значение перечислимого значения в переменные периоды, когда 2 затем FixedPeriods.

Надеюсь, что вы сможете помочь.

4b9b3361

Ответ 1

Буквальный ответ:

return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);

Обратите внимание, что оператор inline if, как и оператор if, проверяет только true или false. Если (value == 1) оценивается как false, это может не обязательно означать это value == 2. Поэтому было бы безопаснее:

return (value == 1
    ? Periods.VariablePeriods
    : (value == 2
        ? Periods.FixedPeriods
        : Periods.Unknown));

Если вы добавите больше значений, встроенный, если станет нечитаемым и будет предпочтительным коммутатор:

switch (value)
{
case 1:
    return Periods.VariablePeriods;
case 2:
    return Periods.FixedPeriods;
}

Хорошая вещь о перечислениях заключается в том, что они имеют значение, поэтому вы можете использовать значения для сопоставления, как предлагалось user854301. Таким образом, вы можете предотвратить ненужные ветки, что делает код более читабельным и расширяемым.

Ответ 2

Вы можете определить свой enum так и использовать при необходимости

public enum MyEnum
{
    VariablePeriods = 1,
    FixedPeriods = 2
}

Использование

public class Entity
{
    public MyEnum Property { get; set; }
}

var returnedFromDB = 1;
var entity = new Entity();
entity.Property = (MyEnum)returnedFromDB;

Ответ 3

Вы можете сделать inline ifs с

return y == 20 ? 1 : 2;

который даст вам 1, если true, и 2, если false.

Ответ 5

Enum to int: (int)Enum.FixedPeriods

Int to Enum: (Enum)myInt