通用列表在c#中添加空值
发布时间:2020-12-15 23:24:59 所属栏目:百科 来源:网络整理
导读:我有一个名为connectedEntites的通用列表,我在for循环中将项添加到此列表中.我在添加之前进行空检查.但即便如此,只要将一个项目添加到此列表还添加了一个空值.我做了调试,但现在可以添加一个空值.由于执行读取操作时该空值,程序崩溃(因为这是一个COM程序).
我有一个名为connectedEntites的通用列表,我在for循环中将项添加到此列表中.我在添加之前进行空检查.但即便如此,只要将一个项目添加到此列表<>还添加了一个空值.我做了调试,但现在可以添加一个空值.由于执行读取操作时该空值,程序崩溃(因为这是一个COM程序).
下面是该类的代码 public class EntityDetails { public ObjectId objId { get; set; } public Handle objHandle { get; set; } public string className { get; set; } public override bool Equals(object obj) { if (obj == null) return false; EntityDetails objAsEntityDetails = obj as EntityDetails; if (objAsEntityDetails == null) return false; else return Equals(objAsEntityDetails); } public bool Equals(EntityDetails other) { if (other == null) return false; return (this.objId.Equals(other.objId)); } }` 下面是您可以看到空值的图像,并且在添加项目时容量也会翻倍,但计数显示正确的值. 解决方法
列表的内部结构<>是一个数组,数组具有指定的长度.每次填充时,此数组都需要通过向List<>添加项目来增长.容量是内部阵列的实际长度,并且在添加后的计数等于当前容量时始终自动增加.它每次都会翻倍.
如果您的COM应用程序无法处理List< EntityDetails>的内部结构(即数组)中的空值.您可以使用TrimExcess()删除这些保留空格. 从MSDN开始:
另见这个问题:List<> Capacity returns more items than added (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |