C#中List.Contains(T)失效的解决方法
作者:天下湿湿
这篇文章主要介绍了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)失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!