繁体   English   中英

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

[英]Not all code paths return value

这是我的方法:

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;
   }          
}

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

您需要对此if语句进行else处理:

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

如果字符串不为空怎么办? 您需要为该情况返回一个值。

万一没有退货

if (results.ToString() == "")
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;
        }          
    }

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

您的所有回报都在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;
    }
}

但是,如果result.ToString results.ToString()为“”,将会发生什么……没有返回值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM