這個小代碼片段將使用我的引用對象作爲關鍵字來增加存儲在字典中的計數值(整數)。當字典很小時,多次查找並不是什麼大問題,但是這個特殊的字典會變得很大。使用指向字典值中的值類型的指針
Private RefCount As IDictionary(Of ILifeTimeManaged, Integer)
......... CODE HERE.....
Private Sub IncrementRefCount(ByVal entity As ILifeTimeManaged)
Dim prevCount As Integer
''# if we have no reference entry, add one and set its count to 1
If Not RefCount.TryGetValue(entity, prevCount) Then
RefCount.Add(entity, 1)
Else
''# otherwise increment its count by 1
RefCount.Item(entity) = prevCount + 1
End If
End Sub
我找到了相應的字典條目,然後遞增存儲在該值中的int值,或者添加一個新的字典條目。
使用指向字典值的指針是不是一個好主意?然後當我已經獲得價值時,我可以避免第二次鍵查找。你將如何實現它?這在.NET4中甚至可能嗎?
我可以用IntPtr來做嗎? http://msdn.microsoft.com/en-us/library/system.intptr.aspx
RefCount.Item(entity) = prevCount + 1
沒錯,但在這裏,我稱量拆箱成本與我的字典查找的成本。 – Matthew 2011-02-24 00:00:34
澄清:如果我使用引用對象來保存容器,我正在討論容器的「拆箱」以派生我的int。 – Matthew 2011-02-24 00:26:57
@Matthew PK:你有Ref的「拆箱」與Dictionary的「拆箱」和查找,所以它應該是Ref的一個勝利,但這絕對是一個微型優化。 – 2011-02-24 01:27:00