Tag: generics集合

如何在generics方法中过滤集合

我有两个类,它具有以下属性 Class A { public int CustID { get; set; } public bool isProcessed { get; set; } } Class B { public int EmpId{ get; set; } public bool isProcessed { get; set; } } 我创建了一个接受所有这些类的generics方法。’isProcessed’属性在这两个类中都很常见。 public void ProceesData(IList param1, string date1) { } 我需要关注的事情 在ProcessData方法内部我想过滤具有isProcessed标志的项目为“True”。 此外,我想迭代此集合,并需要为IsProcessed属性设置值。 注意:我更喜欢使用reflection的解决方案,因为属性名称是常量(即“IsProcessed”) 任何人都可以帮助这个。

无法将keyValuePair直接添加到Dictionary

我想将KeyValuePair到Dictionary ,但我不能。 我必须分别传递密钥和值,这必然意味着Add方法必须创建一个新的KeyValuePair对象来插入,这不是非常有效。 我不敢相信Add方法上没有Add(KeyValuePair)重载。 任何人都可以提出这种明显疏忽的可能原因吗?

如何有效地从List 中删除(C#)?

如果我理解正确(如果我错了请纠正我),列表是由.NET中的数组实现的,这意味着列表中每个项目的删除都会导致重新分配所有列表(这反过来意味着O(n) )。 我正在开发一款游戏,在游戏中我有许多子弹在任何给定时刻在空中飞行,让我们说100个子弹,每帧我移动几个像素并检查与游戏中物体的碰撞,我需要删除从列表中每个碰撞的子弹。 所以我在另一个临时列表中收集了碰撞的子弹,然后执行以下操作: foreach (Bullet bullet in bulletsForDeletion) mBullets.Remove(bullet); 因为循环是O(n)并且删除是O(n) ,所以我花费O(n^2 )时间来移除。 有没有更好的方法来删除它,或更合适的集合使用?