簡體   English   中英

檢測結果是 0 、 -4 還是其他?

[英]Detect if result is 0 , -4 or something else?

我有一個最后有結果的方法,我想檢測數字是否為 0 以及是否為 -4。 0 表示好 -4 表示可以解決的事情 其他都是不好的。 喜歡

if ( Result != 0)
{
MessageBox.Show("It's bad!")
}
else if ( Result == -4)
{
Thread.Sleep(20000);
MyMethod.TryAgain();
}
else
{
MessageBox.Show("It's good");
}

我的問題是 -4 不是 0,所以如果我得到結果 -4 它需要我的 Result != 0 方法。 我該如何解決? 先感謝您。

使用switchcase

switch (Result) {
    case 0: 
        MessageBox.Show("It's good"); 
        break;
    case -4: 
        Thread.Sleep(20000);
        MyMethod.TryAgain();
        break;
    default:
        MessageBox.Show("It's bad!");
        break;
}

微軟文檔: https : //msdn.microsoft.com/en-us/library/06tc147t(v=vs.110).aspx

只需將您的 if 結構重新排序為以下內容:

if ( Result == 0)
{
    MessageBox.Show("It's good")
}
else if ( Result == -4)
{
    Thread.Sleep(20000);
    MyMethod.TryAgain();
}
else
{
    MessageBox.Show("It's bad");
}

所以你最初的問題,即首先評估Result != 0案例,已經不復存在了。

當您構建一系列非排他條件時,從最強的條件(即最具體的條件)開始。 否則,將執行較弱條件的代碼,從而阻止對更具體條件的訪問。

在您的情況下, Result == -4意味着Result != 0 ,這意味着第一個條件比第二個條件更具體。 因此,您應該在Result != 0之前檢查Result == -4 否則,永遠不會達到Result == -4

C# 提供了多種實現此邏輯的方法。 只要您遵循從最具體到最不具體對條件進行排序的一般規則,選擇特定的實現取決於您。

只需更改分支順序

if (Result == -4) \\ solve
else if (Result != 0) \\ bad
else \\ good

對不起,錯誤的代碼。 請參閱下面的評論。

switch(Result) {
case 0:
  MessageBox.Show("It's bad!");
  break;
case -4:
  Thread.Sleep(20000);
  MyMethod.TryAgain();
  break;
default:
  MessageBox.Show("It's good");
  break;
}

暫無
暫無

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

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