Inline IF Statement в С#
Как я напишу выражение Inline IF в моем классе С# Service при настройке моего значения перечисления в соответствии с возвращаемой базой данных?
Например: Когда возвращаемое значение базы данных равно 1, установите значение перечислимого значения в переменные периоды, когда 2 затем FixedPeriods.
Надеюсь, что вы сможете помочь.
Ответы
Ответ 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.
Ответ 4
Это то, что вам нужно: тернарный оператор, пожалуйста, взгляните на это
http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx
http://www.dotnetperls.com/ternary
Ответ 5
Enum to int: (int)Enum.FixedPeriods
Int to Enum: (Enum)myInt