2012-01-16 104 views
0

我有這樣的下面的代碼:如何優化此代碼?

if (userValueSom01 == realResult01) 
    { 
     //answer = correct 
     //count +1 for overall good answers 
     WpfApplication1.Properties.Settings.Default.totallGood++; 
     //count for good +1 
     answerThisWindowGood++; 
     //make visible the green logo 
     Som01G.Visibility = Visibility.Visible; 
    } 
    else 
    { 
     //answer = wrong 
     //count +1 for overall wrong answers 
     WpfApplication1.Properties.Settings.Default.totallWrong++; 
     //count for wrong +1 
     answerThisWindowWrong++; 
     //make visible the red logo 
     Som01W.Visibility = Visibility.Visible; 
     labelSom01Check.Content = Convert.ToString(realResult01); 
    } 

現在的觀點是,這種情況發生XX次,其中XX是你的代碼中顯示的數字對應的數字。 所以在上面的例子中,XX是01. *注意,它的01在輸入中,而01在結果中也是

不是很深入到c#(還),起初我認爲當XX是20,我將需要複製上面這部分20次,並更改數字。 現在這似乎很繁瑣,我想應該有一些更聰明的方式來處理這個問題,關鍵是,我不能想到如何(如上所述,我不是很深入到C#)。

任何能推動我走向正確方向的人?

謝謝你提前。

---編輯1 --- 謝謝Miika L. 從您的解決方案稍有不同:

public bool checkValue(double value, int result, Image controlG, Image controlW, Label label) 
     { 
      if (value == result) 
      { 
       //... Do stuff 
       controlG.Visibility = Visibility.Visible; 
       return true; 
      } 
      else 
      { 
       //... Do other stuff 
       controlW.Visibility = Visibility.Visible; 
       label.Content = result.ToString(); 
       return false; 
      } 
     } 

,現在我可以確實只要致電: 布爾測試=校驗值(userValueSom01,realResult01, Som01G,Som01W,labelSom01Check);

作品:) thanx!

+1

從上面的代碼,沒有太多的優化可以完成。你如何重複xx時間(記錄在一個計數器中),然後設置值(由櫃檯) – 2012-01-16 08:33:32

+0

ahaa,所以重複並使值++? – Dante1986 2012-01-16 08:34:53

回答

1

把它寫成函數怎麼樣?

public bool checkValue(
    int value, 
    int result, 
    Control controlG, 
    Control controlW, 
    Label label) 
{ 
    if (value == result) 
    { 
     ... Do stuff 
     controlG.Visibility = Visibility.Visible; 
    } 
    else 
    { 
     ... Do other stuff 
     controlW.Visibility = Visibility.Visible; 
     label.Content = result.ToString(); 
    } 
} 
+0

ahaa然後只是把它叫做1,但它只會佔用1行?這已經變得更有意義了,然後粘貼整個事情xx次。我想我可以把它變成另一個類,所以我可以輕鬆地在不同的地方調用它:) – Dante1986 2012-01-16 08:36:27

+3

Protip:一種名爲'CheckXXX'的方法不應該改變數據或改變狀態。 – leppie 2012-01-16 08:37:48

+0

Uuh,不是這樣,它可以使用「ref」鍵嗎?或者我現在完全混合了東西? (我需要重新閱讀那一章,我猜嘿嘿) – Dante1986 2012-01-16 08:47:00

0

而不是定義在它的名字一樣userValueSom01數百個變量與數字,realResult01更好的使用陣列字典發送給打印機。

+0

不知道字典(還),將調查 – Dante1986 2012-01-16 16:50:32