c# - 为什么这个代码块说 "not all code paths return a value"?

标签 c# asp.net

我写了下面的代码...但是我收到如下错误:

错误 1“LoginDLL.Class1.Login(string, string, string)”:并非所有代码路径都返回值

请帮帮我...

提前致谢...

我的代码如下...

public int Login(string connectionString,string username,string password)
{
    SqlConnection con=new SqlConnection(connectionString);
    con.Open();

    SqlCommand validUser = new SqlCommand("SELECT count(*) from USER where username=@username", con);
    validUser.Parameters.AddWithValue("@username", username);
    int value=Convert.ToInt32(validUser.ExecuteScalar().ToString());
    if (value == 1)
    {
        //check for password
        SqlCommand validPassword = new SqlCommand("SELECT password from USER where username=@username", con);
        validPassword.Parameters.AddWithValue("@username", username);
        string pass = validPassword.ExecuteScalar().ToString();
        if (pass == password)
        {
            //valid login
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else if (value == 0)
    {
        return 2;

    }
}

最佳答案

如果 value == 3 会怎样?

你可以这样重写代码:

public LoginResult Login(string connectionString, string username, string password)
{
    if (string.IsNullOrEmpty(username)
    {
        return LoginResult.InvalidUser;
    }
    else if (string.IsNullOrEmpty(password)
    {
        return LoginResult.InvalidPassword;
    }

    using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();

        using (var command = connection.CreateCommand())
        {
            command.CommandText = "SELECT password from USER where username=@username";
            command.Parameters.AddWithValue("@username", username);
            var actualPassword = (string)command.ExecuteScalar();

            if (actualPassword == null)
            {
                return LoginResult.InvalidUser;
            }
            else if (password != actualPassword)
            {
                return LoginResult.InvalidPassword;
            }
            else
            {
                return LoginResult.Success;
            }
        }
    }
}

public enum LoginResult
{
    Success,
    InvalidPassword,
    InvalidUser
}

关于c# - 为什么这个代码块说 "not all code paths return a value"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484623/

相关文章:

c# - 正则表达式验证 .NET 的非负小数或空白?

c# - 如何判断一个类是否实现了特定的接口(interface)

c# - 查找带和不带连字符的单词的所有可能组合

c# - 在 xaml 中找不到命名空间,但可以在 C# 代码中使用

c# - 从 Metro 应用程序访问 Azure 中受 ACS 保护的 Web API 站点

c# - 克隆不同对象属性的最佳方法

c# - 从代码隐藏到 javascript 获取 ASP 页面中的文件路径

c# - asp.net javascript 消息未显示

HTML - 图像未显示

c# - 如何修复 ASP.NET 中的 "System.IO.IOException: Unable to read data from the transport connection: The connection was closed"?