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

如何通过getName()查找List<Usuario>元素?遇类型转换错误

问题解决:List查找匹配名称元素的错误修正

错误原因

list.IndexOf(buscarItem)报错是因为List<Usuario>的IndexOf方法要求传入Usuario类型的对象,但你传入了字符串,编译器无法完成类型转换,所以抛出错误。

正确实现方法

方法1:使用FindIndex结合Lambda表达式(推荐)

直接修改EncontrarItem方法,通过Lambda表达式匹配Usuario的name属性:

private int EncontrarItem(String buscarItem)
{
    // 查找第一个name与目标字符串匹配的元素索引,找不到返回-1
    return list.FindIndex(u => u.getName() == buscarItem);
}

原onFile方法无需修改,可直接正常运行。

方法2:直接用Any方法简化判断(更简洁)

如果仅需要判断元素是否存在,不需要获取索引,可以直接简化onFile方法,省去EncontrarItem:

public Boolean onFile(String buscarItem)
{
    // 检查集合中是否存在name匹配的元素
    return list.Any(u => u.getName() == buscarItem);
}

方法3:通过重写相等比较实现IndexOf(适合多场景相等判断)

如果需要在多处按name判断Usuario是否相等,可以给Usuario类实现IEquatable<Usuario>接口并重写相等方法:
修改Usuario类代码:

namespace ElMaestro
{
    internal class Usuario : IEquatable<Usuario>
    {
        private String name { get; set; }
        private int score { get; set; }
        private String course { get; set; }

        public Usuario(String name, int score, String course)
        {
            this.name = name;
            this.score = score;
            this.course = course;
        }

        public String getName() => name;

        public override string ToString() => "\n Nombre del usuario: " + name + "\n Puntaje del curso: " + score + "\n Estado del curso: " + course;

        public override bool Equals(object obj)
        {
            return Equals(obj as Usuario);
        }

        public bool Equals(Usuario other)
        {
            return other != null && name == other.name;
        }

        public override int GetHashCode()
        {
            return name.GetHashCode();
        }
    }
}

之后可以创建临时对象调用IndexOf:

private int EncontrarItem(String buscarItem)
{
    // 创建仅包含目标name的临时Usuario对象
    var tempUsuario = new Usuario(buscarItem, 0, "");
    return list.IndexOf(tempUsuario);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:05:32