根据数据库返回的内容设置枚举值时,如何在 C# 服务类中编写内联 IF 语句?
例如:当数据库返回值为 1 时将枚举值设置为 VariablePeriods,当为 2 时设置为 FixedPeriods。
希望你能帮忙。
根据数据库返回的内容设置枚举值时,如何在 C# 服务类中编写内联 IF 语句?
例如:当数据库返回值为 1 时将枚举值设置为 VariablePeriods,当为 2 时设置为 FixedPeriods。
希望你能帮忙。
字面上的答案是:
return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);
请注意,内联 if 语句,就像 if 语句一样,只检查真假。如果 (value == 1) 的计算结果为 false,则不一定意味着 value == 2。因此这样会更安全:
return (value == 1
? Periods.VariablePeriods
: (value == 2
? Periods.FixedPeriods
: Periods.Unknown));
如果您添加更多值,则内联 if 将变得不可读,并且首选开关:
switch (value)
{
case 1:
return Periods.VariablePeriods;
case 2:
return Periods.FixedPeriods;
}
枚举的好处是它们有一个值,因此您可以按照 user854301 的建议使用这些值进行映射。这样可以防止不必要的分支,从而使代码更具可读性和可扩展性。
你可以定义你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;
你可以做内联ifs
return y == 20 ? 1 : 2;
如果为真,则为 1,如果为假,则为 2。
这就是你需要的:三元运算符,请看这个
http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx
枚举到 int:(int)Enum.FixedPeriods
整数到枚举:(Enum)myInt