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

C# 校验列表内用户实现登录时列表及对象访问异常如何解决

问题排查与修复方案

现存错误点

  • 登录方法中创建了全新的空User对象checkUser,其userName默认值为null,调用IndexOf必然报错,且完全没有使用存储所有已注册用户的userList做用户匹配
  • 未提前判断用户名是否存在于用户列表中,直接通过索引访问列表大概率会触发索引越界异常
  • Console.WriteLine(userList)只能打印列表的类型信息,无法输出列表内的用户数据,属于调试输出错误
  • 登录成功时定义的loggedInUser是方法内部局部变量,方法执行完成后就会被销毁,外部无法获取到登录用户信息

修复后代码

using System.Linq;

public class User 
{
    public string userName;
    public string password;
    public string address;
    public int contactNumber;
}

public class UserController 
{
    public List<User> userList;
    // 改为类级别公共属性,存储当前登录用户信息,方便外部访问
    public User loggedInUser;

    public UserController() 
    {
        userList = new List<User>();
    }

    public void RegisterUser(string username, string pass, string add, int contact) 
    {
        User newUser = new User();
        newUser.userName = username;
        newUser.password = pass;
        newUser.address = add;
        newUser.contactNumber = contact;
        userList.Add(newUser);

        Console.WriteLine($"新注册用户:{newUser.userName}");
        // 遍历打印所有已注册用户名,方便调试
        Console.WriteLine("当前已注册用户列表:");
        foreach(var u in userList)
        {
            Console.WriteLine(u.userName);
        }
    }

    public void LoginUser(string username, string pass) 
    {
        // 从已注册用户列表中匹配用户名一致的用户
        var matchedUser = userList.FirstOrDefault(u => u.userName == username);
        if(matchedUser == null)
        {
            Console.WriteLine("用户名不存在");
            return;
        }
        if (matchedUser.password == pass) 
        {
            Console.WriteLine("登录成功"); 
            loggedInUser = matchedUser;
        } 
        else 
        {
            Console.WriteLine("密码错误");
        }
    }
}

补充注意事项

  • 生产环境禁止明文存储用户密码,需要做哈希加盐处理后再存入存储介质
  • 可以根据业务需求给User类的属性加上封装,避免外部直接修改内部字段

内容的提问来源于stack exchange,提问作者Cale Lewis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:45:03