根据数据库返回的内容设置枚举值时,如何在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)