2011-06-21 43 views
0

字典類有TryGetValue
名單我想只有包含(不起作用基於索引)如何處理列表ArgumentOutOfRangeException

但這是不夠的,我該怎麼辦這..

當我添加某種對象到列表。

我使用list.IndexOf(objectJustAdded);來獲取對象的索引位置。

在我的服務器中,客戶端具有相同的列表,只是將列表的索引發送到服務器,即服務器如何訪問存儲在列表中的對象。

現在我試圖阻止我認爲不會發生的ArgumentOutOfRangeException,但是如果有人發送帶有錯誤索引的格式錯誤的數據包以列出,我希望使服務器對黑客攻擊保持穩定..此異常可能會彈出。

什麼是最好的處理方法? Try/Catch?什麼更好?

+0

只需將它包裝在一個'嘗試/ Catch'並從那裏處理錯誤。 –

+0

會涉及包裝整個代碼我想要像if語句的東西,所以我可以立即返回(中斷)執行。另外,人們總是告訴我永遠不要依賴例外,試着確保它們不會通過修復它們而發生。 – SSpoke

+0

他們是對的,但只有當你知道什麼數據進入一段代碼。如果你將它留給客戶開放,無論如何將它封裝在「Try/Catch」中,因爲你永遠不知道他們要上傳什麼。 您可以檢查對象是否有效,如果它是,然後繼續或打破像你說的。 –

回答

0

如果通過索引要循環,你可以做這樣的事情:

double removedCount = 0; 
for (int i = 0; i <= lst.Count - 1; i++) { 
    lst.RemoveAt(i - removedCount); 
    removedCount = removedCount + 1; 
} 
0

發送對象的哈希代碼,而不是和使用字典

+0

什麼如果哈希碼是相同的(多於一個副本和不同的對象?可以發生嗎? – SSpoke

+0

谷歌它,你可以allways實現你自己的GetHashCode。 –

+0

哦,我看到了。不是一個壞主意..我猜似乎過度做它儘管如此 – SSpoke