You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:返回列表中第一个符合条件的用户,无匹配项时返回null
  • StringComparison.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:40:57