在线IF语句在C#
根据数据库返回了哪些设置我的枚举值时,如何将我写的内联IF语句在我的C#类服务?在线IF语句在C#
例如:当返回的数据库值是1,则枚举值设置为VariablePeriods,则当2 FixedPeriods。
希望能对你有所帮助。
字面上的答案是:
return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);
注意,内联if语句,就像if语句,只为检查true或false。如果(价值== 1)评估为假,它可能并不一定意味着价值== 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建议。这样可以防止不必要的分支,从而使代码更具可读性和可扩展性。
你可以做内联IFS与
return y == 20 ? 1 : 2;
如有虚假,这将给你1,如果真和2。
你可以定义你的enum
像这样和使用投在需要的地方
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;
这样看看,因为它阻止分支。 – chiccodoro 2012-08-16 07:02:48
已经在我的实体类中有这个。需要根据服务类中从数据库返回的内容设置Enum。这就是为什么我需要做一个内联IF声明? – Landi 2012-08-16 07:06:41
都能跟得上你可以简单地设置您需要的属性 – user854301 2012-08-16 07:09:21
枚举为int:(int)Enum.FixedPeriods
诠释,以枚举:(Enum)myInt
这是你所需要的:三元运算符,请在此
http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx
建议的转换分支这是条件运算符。这恰好是**三元运算符。任何三参数运算符都是“三元”的。 – 2012-08-16 07:16:36
@Ysterhak:很高兴帮助。我仍然想知道为什么你更喜欢使用按照user854301 – chiccodoro 2012-08-16 08:29:26