根据数据库返回的内容设置枚举值时,如何在C#Service类中编写内联IF语句?
例如:当返回的数据库值为1时,将枚举值设置为VariablePeriods,然后设置为2,然后设置为FixedPeriods。
希望你能提供帮助。
答案 0 :(得分:68)
字面答案是:
return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);
请注意,内联if语句与if语句一样,只检查true或false。如果(value == 1)的计算结果为false,则可能不一定意味着该值== 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建议的那样。这样就可以防止不必要的分支,从而使代码更具可读性和可扩展性。
答案 1 :(得分:12)
您可以像这样定义enum
,并在需要时使用 cast
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;
答案 2 :(得分:5)
您可以使用
执行内联ifsreturn y == 20 ? 1 : 2;
如果为真,则为1,如果为假则为2。
答案 3 :(得分:1)
这就是你需要的:三元运算符,请看一下
http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx
答案 4 :(得分:0)
枚举到int:(int)Enum.FixedPeriods
Int to Enum:(Enum)myInt