データベースが返す値に基づいて列挙値を設定するときに、C#サービスクラスにインラインIF文を書く方法を教えてください。C#のインラインIF文
例:返されるデータベース値が1の場合、2、次に固定小数点のときは、enum値をVariablePeriodsに設定します。
希望すると助かります。
データベースが返す値に基づいて列挙値を設定するときに、C#サービスクラスにインラインIF文を書く方法を教えてください。C#のインラインIF文
例:返されるデータベース値が1の場合、2、次に固定小数点のときは、enum値をVariablePeriodsに設定します。
希望すると助かります。
がリテラルの答えは次のとおりです。
return (value == 1 ? Periods.VariablePeriods : Periods.FixedPeriods);
注インラインif文という、ちょうどif文のように、唯一の真か偽かどうかをチェックします。読めないとAになります場合は、より多くの値インラインを追加する場合
return (value == 1
? Periods.VariablePeriods
: (value == 2
? Periods.FixedPeriods
: Periods.Unknown));
:(値== 1)偽と評価された場合、それは必ずしもそのため、それがこのようなより安全になり、その値== 2を意味しない場合がありますスイッチが好ましいであろう。
switch (value)
{
case 1:
return Periods.VariablePeriods;
case 2:
return Periods.FixedPeriods;
}
列挙型の良いところは、彼らが価値を持っているということなので、user854301が示唆したように、あなたが、マッピングの値を使用することができます。こうすることで、不要なブランチを防ぐことができ、コードをより読みやすく拡張することができます。
あなたは、偽の場合は、あなたに1 trueの場合と2を与える
return y == 20 ? 1 : 2;
でインラインIFSを行うことができます。
あなたの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
これは既にエンティティクラスにあります。私のサービスクラスのDBから返されるものに応じてEnumを設定する必要があります。そのため、私はインラインIFステートメントを行う必要がありますか? – Landi
いいえ、必要なプロパティを設定するだけでいいです。 – user854301
列挙型はintに:(int)Enum.FixedPeriods
のInt列挙へ:(Enum)myInt
これは何が必要です:それは分岐を防ぐため、三項演算子は、このような本
http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx
これは条件演算子です。ちょうど** a ** **三項演算子です。 3パラメータ演算子はすべて '3進'です。 –
@Ysterhak:喜んで助けました。私はまだあなたが提案したようにキャストを使うことよりも分岐を好む理由は疑問だと思います。user854301 – chiccodoro