如果查询没有返回任何值,在返回的对象中使用sentinal值"-1"被认为是不好的做法吗?

Kin*_*tor 1 c#

我在DataModel.cs类中有以下代码:

    public User ValidateUser(string Username, string Password)
    {
        DataContext db = new DataContext();

                var query = from u in db.Users where (u.Username == Username && u.Password == Password) select u;

                if (query.Count() != 0)
                {
                    return query.First();
                }
                else
                {
                    return new User { UserID = -1 };
                }
    }
Run Code Online (Sandbox Code Playgroud)

我有一个登录类在我的DataModel上调用它,检查用户是否有效.如果用户有效,那么我想在我的登录类中引用该"登录"用户(这就是ValidateUser返回用户对象的原因).

现在,如果该用户不存在或密码错误,我只返回一个空的User对象,其id设置为-1,将其标记为不是真实用户.

这是不好的做法吗?

我该如何处理这个案子?如果ValidateUser刚刚返回一个bool它不会有问题,但因为我还需要对该用户的引用,我不知道如何做到这一点.

Ste*_*ger 5

IMO,这是不好的做法,因为它是隐含的.如果没有返回任何内容,则该方法应返回null.这是不言自明的.

或者,如果需要像正常情况那样处理完全不同或需要其他信息,您可以考虑抛出异常.