C#中List.Contains(T)失效的解决方法

 更新时间:2024年03月05日 15:38:12   作者:天下湿湿  
这篇文章主要介绍了C#中List.Contains(T)失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

list.Contains() “失效“ ???

     public void RemoveCustomMaterialInfo(MaterialInfo info)
        {
            if (m_MaterialList == null)
            {
                return;
            }

            if (m_MaterialList.Contain(info))
            {
                m_MaterialList.Remove(info);
                Debug.Log($"删除 :info: {info.serial}, {info.serial}, {info.velocity},{info.note}, left : {this.m_MaterialList.Count}");

                //存储本地
                //var content = JsonUtility.ToJson(this.m_MaterialList);
                var content = JsonConvert.SerializeObject(GetMaterialInfoListBySerial("自定义"));
                File.WriteAllTextAsync(MaterialCustomConfigPath, content);
            }
        }

习惯了这么用,却不小心踩坑

List.Contains(T t) t必须是原来列表中的引用才有效,如果info是你new出来的,不好意思,不起做用了,包括Remove也是如此

===》处理办法:

       private bool Contain(MaterialInfo materialInfo)
        {
            if (this.m_MaterialList == null)
            {
                return false;
            }

            return m_MaterialList.Exists(
                info => info.serial.Equals(materialInfo.serial) && info.type.Equals(materialInfo.type)
                                                                && info.velocity.Equals(materialInfo.velocity)
                                                                && info.note.Equals(materialInfo.note));
        }

到此这篇关于C#中List.Contains(T)失效的文章就介绍到这了,更多相关C# List.Contains(T)失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • C#实现利用反射简化给类字段赋值的方法

    C#实现利用反射简化给类字段赋值的方法

    这篇文章主要介绍了C#实现利用反射简化给类字段赋值的方法,涉及C#操作反射的相关技巧,需要的朋友可以参考下
    2015-05-05
  • C#使用linq给List某个属性值赋值方式

    C#使用linq给List某个属性值赋值方式

    在C#中使用LINQ进行数据查询与修改的最佳实践,推荐使用ForEach方法或传统的foreach循环进行List对象属性赋值;避免直接在LINQ查询表达式中执行赋值操作;可考虑使用Select投影生成新列表以保持数据不变性
    2026-06-06
  • C# MVC模式下商品抽奖功能实现

    C# MVC模式下商品抽奖功能实现

    这篇文章主要为大家分享了C#在MVC模式下实现商品抽奖功能,思路清晰,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • C#实现modbus通讯的实现示例

    C#实现modbus通讯的实现示例

    本文主要介绍了modbus通讯的串口(RTU)、网口(TCP)通讯的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • Unity实现通用的信息提示框

    Unity实现通用的信息提示框

    这篇文章主要为大家详细介绍了Unity实现通用的信息提示框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C#基于DBContext(EF)实现通用增删改查的REST方法实例

    C#基于DBContext(EF)实现通用增删改查的REST方法实例

    这篇文章主要介绍了C#基于DBContext(EF)实现通用增删改查的REST方法实例,是C#程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • C#实现文件压缩与解压功能的示例代码

    C#实现文件压缩与解压功能的示例代码

    这篇文章主要为大家详细介绍了如何利用C#实现文件压缩与解压功能,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-05-05
  • 在C#中自动化创建Excel仪表图的操作代码

    在C#中自动化创建Excel仪表图的操作代码

    在数据驱动的时代,Excel 仪表图(Gauge Chart)因其直观、高效的特点,成为业务监控和绩效评估的利器,本文我们将深入探讨如何利用 C# Excel Chart Automation 的强大能力,通过编程方式在 Excel 中自动化创建仪表图,彻底告别手动操作的烦恼,需要的朋友可以参考下
    2025-09-09
  • C#使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列化

    C#使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列

    这篇文章介绍了C#使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • 聊聊Unity 自定义日志保存的问题

    聊聊Unity 自定义日志保存的问题

    这篇文章主要介绍了Unity 自定义日志保存的问题,之前unity5.x在代码中写了debug.log打包之后在当前程序文件夹下会有个对应的"outlog.txt",后来进行了更改,今天通过代码给大家介绍了Unity日志保存的问题,需要的朋友一起看看吧
    2021-05-05

最新评论