我正在製作一款XNA遊戲,並且我正在調用以下代碼,每次更新2到20次。我試着用Google搜索,看起來這是半緩慢的,所以我只是想我會問是否有更快的方法來比較類型?GetType()==類型的性能
代碼:
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類。修飾符是粒子引擎的一部分。另外,我的遊戲不是在我可以真正測試這個的情況下,所以我不能測試這個,但是這應該是正確的?
我讀了一些關於RunTimeTypeHandles的內容,應該更快一些,我應該使用它嗎?
編輯:什麼我的目標與此有關的是,我能做到以下幾點:
(particleEffect["NameOfEmitter"].Modifiers[typeof(SomeCoolModifier)] as SomeCoolModifier).Variable = Value;
基本上我只是想改變在運行某些更動的價值。編輯2:我只是意識到,我可以將修飾語的引用保存到我現在調用此類的類中:P也許不是乾淨的代碼,如果我有5-10個修飾符但應該刪除此問題。
爲什麼你需要一個由* type *索引的映射?我能想到的唯一用途是元編程,並且每幀不會發生20次。你確定你不能只使用多態嗎? – delnan
不是重複的,但http://stackoverflow.com/questions/378643/fastest-type-comparison應該有所幫助。 – Yuck
最好有更明確的異常數據:'NotImplementedException(「修復此」);' – mydogisbox