并非所有代码路径都返回值

时间:2011-03-18 14:19:38

标签: c#

这是我的方法:

public bool UserExistsActiveDir()
{
   try
   {
      const int ADS_UF_ACCOUNTDISABLE = 0x00000002;
      DirectoryEntry de = new DirectoryEntry();
      de.Path = "LDAP://domainname;
      DirectorySearcher objADSearcher = new DirectorySearcher(de);
      de.AuthenticationType = AuthenticationTypes.Secure;

      objADSearcher.SearchRoot = de;
      objADSearcher.Filter = "(SAMAccountName=" + txtUserName.Text + ")";
      SearchResult results = objADSearcher.FindOne();

      if (results.ToString() != "")
      {
         int flags = Convert.ToInt32(results.Properties["userAccountControl"][0].ToString());
         //results.Properties["userAccountControl"][0].ToString().Equals("514");
         if (Convert.ToBoolean(flags & ADS_UF_ACCOUNTDISABLE))
         {
            return false;
         }
         else
         {
            return true;
         }
      }
   }
   catch (Exception ex)
   {
      lblError.Text = ex.Message.ToString();
      return false;
   }          
}

我哪里错了?它说缺少回报,但据我所知,我所有的回复陈述都在那里。

6 个答案:

答案 0 :(得分:4)

您需要else这个if声明:

if (results.ToString() != "")

如果字符串不为空,会发生什么?您需要为该案例返回一个值。

答案 1 :(得分:1)

没有返回

if (results.ToString() == "")

答案 2 :(得分:0)

public bool UserExistsActiveDir()
    {
        try
        {
            const int ADS_UF_ACCOUNTDISABLE = 0x00000002;
            DirectoryEntry de = new DirectoryEntry();
            de.Path = "LDAP://domainname;
            DirectorySearcher objADSearcher = new DirectorySearcher(de);
            de.AuthenticationType = AuthenticationTypes.Secure;

            objADSearcher.SearchRoot = de;
            objADSearcher.Filter = "(SAMAccountName=" + txtUserName.Text + ")";
            SearchResult results = objADSearcher.FindOne();
            if (results.ToString() != "")
            {
                int flags = Convert.ToInt32(results.Properties["userAccountControl"][0].ToString());
                //results.Properties["userAccountControl"][0].ToString().Equals("514");
                if (Convert.ToBoolean(flags & ADS_UF_ACCOUNTDISABLE))
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
// <-here
        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message.ToString();
            return false;
        }          
    }

答案 3 :(得分:0)

if (results.ToString() != "")返回false时没有返回值。

答案 4 :(得分:0)

您的所有回复都在此if语句中:

if (results.ToString() != "")
{
    int flags = 
        Convert.ToInt32(results.Properties["userAccountControl"][0].ToString());

    //results.Properties["userAccountControl"][0].ToString().Equals("514");
    if (Convert.ToBoolean(flags & ADS_UF_ACCOUNTDISABLE))
    {
        return false;
    }
    else
    {
        return true;
    }
}

但如果results.ToString()是“”,那就是什么......没有回报价值。

答案 5 :(得分:0)

if (results.ToString() != "")声明没有其他内容。

if (results.ToString() != "")
{
    ...
}
else
{
    return false; // or whatever fits in your logic
}

或者没有嵌套:

if (results.ToString() != "")
{
    ...
}
return false; // or whatever fits in your logic