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)失效内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论