C#中的内联IF语句

时间:2012-08-16 06:59:27

标签: c#

根据数据库返回的内容设置枚举值时,如何在C#Service类中编写内联IF语句?

例如:当返回的数据库值为1时,将枚举值设置为VariablePeriods,然后设置为2,然后设置为FixedPeriods。

希望你能提供帮助。

5 个答案:

答案 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)

您可以使用

执行内联ifs
return y == 20 ? 1 : 2;

如果为真,则为1,如果为假则为2。

答案 3 :(得分:1)

答案 4 :(得分:0)

枚举到int:(int)Enum.FixedPeriods

Int to Enum:(Enum)myInt