运算符'&&'不能应用于'string'和'string'类型的操作数。

问题描述:

如何解决包含运算符'& &'的错误不能应用于'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

您需要每次使用逻辑运算符。如果您想要将所有字符串转换为空字符串,请使用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); 

的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