C#でswitchまたはif文を使用せずにEnumを処理する方法は?例ステートハンドリング用の多態列挙型
enum Pricemethod
{
Max,
Min,
Average
}
については
...と私はswitch文を回避し、それが一般的なようにしたいArticleクラス
public class Article
{
private List<Double> _pricehistorie;
public List<Double> Pricehistorie
{
get { return _pricehistorie; }
set { _pricehistorie = value; }
}
public Pricemethod Pricemethod { get; set; }
public double Price
{
get {
switch (Pricemethod)
{
case Pricemethod.Average: return Average();
case Pricemethod.Max: return Max();
case Pricemethod.Min: return Min();
}
}
}
}
を持っています。
特定のプライスメソッドは、特定の計算を呼び出して返します。
ここで、多分誰かが良い実装のアイディアを持っています。 状態パターンについて既に検索されていますが、これは正しいパターンではないと思います。
価格は 'decimal'、ない' double'べきであると言うことができます。長さや質量などの物理量には 'double'を使います。正確な10進数量のために 'decimal'を使います。 –
**変更可能**価格の回収をご希望ですか?あなたのメソッドの呼び出し元がそのリストで 'Clear'を呼び出すのを止めているのは何ですか? –
これを_strategy-pattern_でタグ付けしましたか?それはここでの答えです。 –