簡體   English   中英

如何縮短“if else”事件?

[英]How can I shorten the "if else" event?

我怎樣才能把這個寫得盡可能短? 這里有更多的條件。 下面代碼的目的是計算總價並將其顯示為一條消息,將每個選定硬件的價格與確定的基本價格相加到計算按鈕單擊事件中。

(抱歉英語不好:/)

decimal tabanFiyat = 500;
decimal cpuFiyat = 0;

if (rbCpuI7.Checked)
  cpuFiyat = 300;
else if (rbCpuI5.Checked)
  cpuFiyat = 200;
else if (rbCpuI3.Checked)
  cpuFiyat = 100;
else if (rbCpuR5.Checked)
  cpuFiyat = 250;
else if (rbCpuR3.Checked)
  cpuFiyat = 150;

tabanFiyat += cpuFiyat;

decimal ramFiyat = 0;

if (rbRam16.Checked)
  ramFiyat = 125;
else if (rbRam8.Checked)
  ramFiyat = 75;
else if (rbRam4.Checked)
  ramFiyat = 45;

tabanFiyat += ramFiyat;

我認為這可以工作:

cpuFiyat = (rbCpuI7.Checked)? 300: 
           (rbCpuI5.Checked)? 200:
           (rbCpuI3.Checked)? 100:
           (rbCpuR5.Checked)? 250:
           (rbCpuR3.Checked)? 150: 0;

tabanFiyat += cpuFiyat;
decimal ramFiyat;
ramFiyat = (rbRam16.Checked)? 125:
           (rbRam8.Checked)?   75:
           (rbRam4.Checked)?   45: 0;

tabanFiyat += ramFiyat;

假設那些是單選按鈕

  var radList = new List<(RadioButton, int)> {
      (rbCpuI7,300),
      (rbCpuI5,200)
      .....
   };

   var chck = radList.FirstOrDefault(x=>x.Item1.Checked);
   rbCpuI5 += chk.Item2;

如果什么都不檢查你會得到 0

假設 .Checked 屬性來自某些 UI,框架可能會公開一個“onChecked”事件,因此事件處理程序應該分配正確的值,如果相互排斥則取消選中其他值。 但是您需要提供更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM