Я делаю игру XNA и звоню по следующему коду от 2 до 20 раз за обновление.Я попробовал поискать в Google, и кажется, что это полумедленно, поэтому я просто подумал, что могу спросить, есть ли более быстрый способ сравнения типов?
Код:
public Modifier this[Type type]
{
get
{
for (int i = 0; i < this.Count; i++)
{
if (this[i].GetType() == type)
{
return this[i];
}
}
throw new NotImplementedException("Fix this");
}
set
{
for (int i = 0; i < this.Count; i++)
{
if (this[i].GetType() == type)
{
this[i] = value;
}
}
if(System.Diagnostics.Debugger.IsAttached)
System.Diagnostics.Debugger.Break();
}
}
Этот коднаходится в классе ModifierCollection, который наследуется от List.Модификатор является частью двигателя частиц.Кроме того, моя игра не находится в состоянии, когда я действительно могу проверить это, поэтому я не могу проверить это, но это должно сработать, верно?
Я читал что-то о RunTimeTypeHandles, что должно быть быстрее, я должен его использовать?
РЕДАКТИРОВАТЬ: что я собираюсь сделать с этим, я могу сделать следующее:
(particleEffect["NameOfEmitter"].Modifiers[typeof(SomeCoolModifier)] as SomeCoolModifier).Variable = Value;
В основном я просто хочу изменить значение некоторых модификаторов во время выполнения.
РЕДАКТИРОВАТЬ 2: Я только что понял, что я могу просто сохранить ссылку Модификатор в класс, где я в данный момент вызываю это: P Может быть, не такой чистый код, если у меня есть 5-10 модификаторов, но должен устранить эту проблему.