在我的程序中,我填充了一个列表,但是当我再次重新运行循环时,我会清除列表以重新重新填充它,因为列表中的某些项可能会更新。但是,有什么方法我可以做到这一点,它只是自动更新列表中的项目,所以我不能。清除并重新添加项目?
_players.Clear();
_weapons.Clear();
_entities.Clear();
var localPlayerPtr = Smurf.Memory.Read<IntPtr>(Smurf.ClientBase + Offsets.Misc.LocalPlayer);
LocalPlayer = new LocalPlayer(localPlayerPtr);
LocalPlayerWeapon = LocalPlayer.GetCurrentWeapon(localPlayerPtr);
for (var i = 0; i < _capacity; i++)
{
var entity = new BaseEntity(GetEntityPtr(i));
if (!entity.IsValid)
continue;
if (entity.IsPlayer())
_players.Add(new Player(GetEntityPtr(i)));
else if (entity.IsWeapon())
_weapons.Add(new LocalPlayerWeapon(GetEntityPtr(i)));
else
_entities.Add(new BaseEntity(GetEntityPtr(i)));
}
_lastUpdate = timeStamp;
答案 0 :(得分:0)
列表的总重新填充应该是一种足够快的方法来处理这个问题。如果你真的需要走另一条路,那么你的另一种选择是当你运行循环时:
_players[index] = newPlayer;
或类似内容)。按ID或其他标识对象的属性进行检查。changesList
)changesList
与其他列表进行比较(您可以使用Except(IEnumerable<T> list)
方法,并且删除未使用的对象。