C#实现登录功能:根据邮箱密码从用户列表返回匹配用户
完善登录函数实现方案
首先需要把login方法的返回类型从void改为User?(C# 8.0及以上支持可空值类型),这样登录成功时返回匹配的用户,失败时返回null。
接下来利用LINQ查询用户列表,筛选出邮箱和密码同时匹配的用户。这里需要注意:邮箱匹配建议忽略大小写(符合用户日常输入习惯),另外实际生产环境中绝对不能明文存储密码,以下仅为示例逻辑。
修改后的完整login函数代码如下:
// 修改返回类型为可空User,同时修正方法名首字母大写(符合C#命名规范) public User? Login() { string email; string pwd; Console.WriteLine("\nPlease enter your email address"); // 修正拼写错误:Readline → ReadLine,同时处理输入为空的情况 email = Console.ReadLine() ?? string.Empty; Console.WriteLine("\nPlease enter your password"); pwd = Console.ReadLine() ?? string.Empty; // 查找邮箱和密码匹配的用户 return users.FirstOrDefault(user => string.Equals(user.Email, email, StringComparison.OrdinalIgnoreCase) && user.Password == pwd); }
关键细节说明
FirstOrDefault:返回列表中第一个符合条件的用户,无匹配项时返回nullStringComparison.OrdinalIgnoreCase:确保邮箱匹配不区分大小写,避免因大小写差异导致登录失败?? string.Empty:防止用户未输入内容时,Console.ReadLine()返回null引发空引用异常
调用示例
调用登录函数后,可通过返回值判断登录结果:
User? loggedInUser = Login(); if (loggedInUser != null) { Console.WriteLine($"Welcome back, {loggedInUser.Name}!"); } else { Console.WriteLine("Invalid email or password."); }
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

