分配布尔值时出错

时间:2010-02-23 19:50:17

标签: c#

我在分配值时遇到错误。

我的代码是:

    protected bool ValidateProfile()
    {
       bool blnFirstName = false;
       bool blnLastName = false;
       bool blnEMail = false;

      //(error on line below: "The left-hand side of an assignment must be a variable, property or indexer")
       ValidateProfile() = false;


   if txtFName != ""
      blnFName = true;

   if txtLName != ""
      blnLName = true;

   if txtEMail != ""
      blnEMail = true;

   if (blnFName) && (blnLName) && (blnEMail))
     ValidateProfile = true;

    }

如何为ValidateProfile分配布尔值?

由于

7 个答案:

答案 0 :(得分:7)

你想要

return false;

在C#中,我们不为函数名赋值,以便返回值。


如果你想在从方法返回的不同时间点设置返回值,那么你应该这样做:

bool retVal; // Defaults to false

if (condition)
    retVal = true;

if (otherCondition)
    retVal = false;

if (thirdCondition)
    retVal = true;

return retVal;

答案 1 :(得分:3)

您无法为函数指定值。您需要return false;

答案 2 :(得分:2)

您想要return false


好的,拿你发布的代码:

protected bool ValidateProfile()
{
      return !String.IsNullOrEmpty(txtFName) && !String.IsNullOrEmpty(txtLName) && !String.IsNullOrEmpty(txtEMail);
}

或者

protected bool ValidateProfile()
{
    bool returnValue = true;

    if(String.IsNullOrEmpty(txtFName))
    {
         returnValue=false;
    } 
    else if(String.IsNullOrEmpty(txtLName))
    {
         returnValue = false;
    } 
    else if(String.IsNullOrEmpty(txtEMail))
    {
         returnValue = false;
    }

    return returnValue;

}

虽然您一旦找到无效字段就可以返回false。

答案 3 :(得分:2)

将最后一行更改为:

return false;

虽然看起来你总是在这里回归虚假。有没有选择返回true?

答案 4 :(得分:2)

正如其他人所指出的,在C#中,您使用的是return而不是MyFunction = x。在这种情况下,您可以将最终检查的结果分配给布尔值并将其返回:

bool retVal =  (blnFName) && (blnLName) && (blnEMail);
return retVal;

或者,您可以完全跳过作业:

return (blnFName) && (blnLName) && (blnEMail);
编辑:我注意到你使用匈牙利表示法,这意味着txtFName是一个TextBox。请记住,C#没有像VB这样的默认属性。如果它是TextBox,它将永远不会等于“”,因为它不是System.String类型。我猜你真的想要评估txtFName.Text

答案 5 :(得分:2)

除了所有回报之外,只是旁注......

您可能想要更改此内容:

如果txtFName!=“”

检查String.IsEmptyOrNull(txtFName.Text)是否

或者至少将变量初始化为null或String.Empty。

只是一个FYI。

答案 6 :(得分:0)

不是C#程序员,但你不能只写:

return (txtFName != "") && (txtLName != "") && (txtEMail != "");

对于函数体?