2015-11-30 16 views
-5

我仍然得到錯誤,即使我已經有一個default條款並非所有的路徑返回開關值

bool Validate(TextBox textBox , string type) 
      // textboxL - textbox accept only letters of alphabets and space.Is Mandatory 
      // textboxS - textbox accept letters of alphabets , space , - , _ .Is Mandatory 
      // return true by default 
     { 
      switch(type) 
      { 
       case "textboxL": 
        if (!Regex.IsMatch(textBox.Text, @"^[a-zA-Z]+$") || String.IsNullOrEmpty(textBox.Text)) { 
         MessageBox.Show("Invalid!!" + textBox.Text + "must contain only letters and shouldn't be empty"); 
         return false; 
        } 
        break; 
       case "textboxS": 
        if (!Regex.IsMatch(textBox.Text, @"^[a-zA-Z-_ ]+$") || String.IsNullOrEmpty(textBox.Text)) { 
         return false; 
        } 
        break; 
       default: return true; 
      } 
     } 
+0

您的返回語句在if語句塊中,因此您的路徑不會以return語句結束。 – juharr

+0

由於您已經在切換案例中使用if條件,爲什麼不簡單地創建完整的if-結構?這樣,你就能夠很快找到你的bug。 –

回答

0

if條款在交換機缺少else

switch(type) { 
    case "A" : if (condition) return true; else return false; break; 
    case "b" : if (condition) return true; else return false; break; 
... 
... 
} 

這樣,如果在任何條件下,條件不具備,也返回一個值。

3

如果type=="textboxL"和內部條件證明是假的,你的函數將不返回任何值。與"textboxS"相同。

注意,只有當我們沒有其他case S的內部去(在這種情況下,你在每個case年底使用breakdefault被調用。

根據您的邏輯,您可能希望return true在功能的末尾。

+0

您應該添加到您的答案不僅是,但也代碼。所以不是寫出默認值,而是在條件不滿足的情況下返回true。 –

相關問題