2016-03-15 454 views
-12

如何解決包含運算符'& &'的錯誤不能應用於'string'和'string'類型的操作數。代碼法洛斯爲:運算符'&&'不能應用於'string'和'string'類型的操作數。

bool AttorneysData() 
{ 
    if (((txtFirstName.Text != "") 
       && ((txtSurname.Text != "") 
       && (txtAddress.Text 
       && (txtTelNo.Text 
       && (txtEmail.Text 
       && (txtCreatePassword.Text 
       && (txtConfirmPassword.Text 
       && (cboDisciplineExpertise.Text 
       && (cboGeographicalLocation.Text 
       && (cboBudgetEstimation.Text 
       && (txtNoofIndividuals.Text 
       && (cboTypeofClients.Text 
       && (txtCompanyName.Text && txtYearsofExperience.Text)))))))))))))) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

} 
+9

糾正它不能 - &&是比較布爾值 - 字符串是不是。你不打算在每個文本之後有!=「」嗎? – BugFinder

+0

另一種讀取驗證字符串的方法是[string.IsNullOrEmpty()](https://msdn.microsoft.com/en-gb/library/system.string.isnullorempty(v = vs.110).aspx) – StuperUser

+0

爲什麼你不再在你的條件下添加那些'!=「」'東西?前兩次,但之後?然而,所有那些奇怪的括號看起來很麻煩。省略它們。 – HimBromBeere

回答

2

您需要每次使用邏輯運算符。如果您想要將所有字符串轉換爲空字符串,請使用String.IsNullOrEmpty()而不是!=運算符。

此外,沒有理由在您的表達中使用()。您需要使用括號來區分操作的優先級,但在代碼中不存在優先級衝突,因爲所有操作都可以從左到右依次執行。

您的if語句已包含返回布爾結果的邏輯表達式,然後您可以將其與返回運算符交換。

return String.IsNullOrEmpty(txtFirstName.Text) 
      && String.IsNullOrEmpty(txtSurname.Text) 
      && String.IsNullOrEmpty(txtAddress.Text) 
      && String.IsNullOrEmpty(txtTelNo.Text) 
      && String.IsNullOrEmpty(txtEmail.Text) 
      && String.IsNullOrEmpty(txtCreatePassword.Text) 
      && String.IsNullOrEmpty(txtConfirmPassword.Text) 
      && String.IsNullOrEmpty(cboDisciplineExpertise.Text) 
      && String.IsNullOrEmpty(cboGeographicalLocation.Text) 
      && String.IsNullOrEmpty(cboBudgetEstimation.Text) 
      && String.IsNullOrEmpty(txtNoofIndividuals.Text) 
      && String.IsNullOrEmpty(cboTypeofClients.Text) 
      && String.IsNullOrEmpty(txtCompanyName.Text) 
      && String.IsNullOrEmpty(txtYearsofExperience.Text); 
2

的if語句的條件的每學期(term1 && term2 && ...)必須解析爲布爾(真/假)值

你可以解決這個問題是這樣的:

bool AttorneysData() 
{ 
    if (txtFirstName.Text != "" 
      && txtSurname.Text != "" 
      && txtAddress.Text != "" 
      && txtTelNo.Text != "" 
      && txtEmail.Text != "" 
      && txtCreatePassword.Text != "" 
      && txtConfirmPassword.Text != "" 
      && cboDisciplineExpertise.Text != "" 
      && cboGeographicalLocation.Text != "" 
      && cboBudgetEstimation.Text != "" 
      && txtNoofIndividuals.Text != "" 
      && cboTypeofClients.Text != "" 
      && txtCompanyName.Text != "" 
      && txtYearsofExperience.Text != "") 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

或稍微更優雅的方式:

return txtFirstName.Text != "" 
    && txtSurname.Text != "" 
    && txtAddress.Text != "" 
    && txtTelNo.Text != "" 
    && txtEmail.Text != "" 
    && txtCreatePassword.Text != "" 
    && txtConfirmPassword.Text != "" 
    && cboDisciplineExpertise.Text != "" 
    && cboGeographicalLocation.Text != "" 
    && cboBudgetEstimation.Text != "" 
    && txtNoofIndividuals.Text != "" 
    && cboTypeofClients.Text != "" 
    && txtCompanyName.Text != "" 
    && txtYearsofExperience.Text != ""; 

而且,考慮使用string.IsNullOrEmpty method這將測試空格和其他空字符:

return !string.IsNullOrEmpty(txtSurname.Text) 
    && !string.IsNullOrEmpty(txtAddress.Text) 
    ... 
+0

string.IsNullOrEmpty不檢查空格和空字符。 IsNullOrWhitespace會。 –

+0

謝謝你的工作。我有另一個錯誤,它休耕爲:txtMin.Text> =「1000」爲這個我得到錯誤作爲運算符'> ='不能應用於類型'字符串'和'字符串'的操作數 – user2801432

+0

@ user2801432你必須轉換字符串值爲整數(?)值,以便將其與例如:Convert.ToInt32(txtMin.Text)> = 1000'比較 – splattne

相關問題