今天在項目中遇到了使用switch語句判斷條件,但問題是條件比較多,大概有幾十個條件,滿屏幕的case判斷,是否有更優雅的寫法替代switch語句呢?
假設有這樣的一個場景:商場經常會根據情況采取不同的打折方案,如果打折方案比較少,可以考慮使用switch語句作判斷。但如果有幾十甚至幾百種打折方案的時候,用switch語句就不夠優雅。
先來一個打折接口。
public interface IValuePRocessor{decimal DaZhe(short policy,decimal orginPrice);}
形參policy用來接收有關打折的枚舉項,形參orginPrice表示打折前的價格。有關打折的枚舉項為:
public enum PolicyEnum{Wuzhe = 0,LiuZhe = 1,QiZhe =2,BaZhe =3,JiuZhe = 4}
實現IValueProcessor接口,根據不同的PolicyEnum項采取不同的算法。
public class MyValueProcessor : IValueProcessor{public decimal DaZhe(short policy,decimal orginPrice){switch (policy){case (short)PolicyEnum.Wuzhe:return orginPrice / 2;case (short)PolicyEnum.LiuZhe:return orginPrice * (decimal)0.6;case (short)PolicyEnum.QiZhe:return orginPrice * (decimal)0.7;case (short)PolicyEnum.BaZhe:return orginPrice * (decimal)0.8;case (short)PolicyEnum.JiuZhe:return orginPrice * (decimal)0.9;default:return orginPrice / 2;}}}
客戶端調用如下:
static void Main(string[] args){Console.WriteLine("請輸入打折政策,0表示5折,1表示6折,2表示7折,3表示8折,4表示9折:");string policy = Console.ReadLine();decimal originPrice = (dec
新聞熱點
疑難解答