C#中的内联IF语句

Lan*_*ndi 39 c#

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

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

希望你能帮忙.

chi*_*oro 70

字面上的答案是:

return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);
Run Code Online (Sandbox Code Playgroud)

请注意,内联if语句与if语句一样,只检查true或false.如果(value == 1)求值为false,则可能不一定意味着值== 2.因此它会更安全:

return (value == 1
    ? Periods.VariablePeriods
    : (value == 2
        ? Periods.FixedPeriods
        : Periods.Unknown));
Run Code Online (Sandbox Code Playgroud)

如果您添加更多值内联,如果将变得不可读并且首选开关:

switch (value)
{
case 1:
    return Periods.VariablePeriods;
case 2:
    return Periods.FixedPeriods;
}
Run Code Online (Sandbox Code Playgroud)

关于枚举的好处是它们有一个值,因此您可以使用映射的值,如user854301所建议的那样.这样就可以防止不必要的分支,从而使代码更具可读性和可扩展性.


use*_*301 12

你可以定义你的enum喜欢,并在需要时 使用cast

public enum MyEnum
{
    VariablePeriods = 1,
    FixedPeriods = 2
}
Run Code Online (Sandbox Code Playgroud)

用法

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

var returnedFromDB = 1;
var entity = new Entity();
entity.Property = (MyEnum)returnedFromDB;
Run Code Online (Sandbox Code Playgroud)


Bug*_*der 5

你可以使用内联ifs

return y == 20 ? 1 : 2;
Run Code Online (Sandbox Code Playgroud)

如果为真,则给出1,如果为假则为2.