我有一個IDictionary.Item返回類型的問題。以下是代碼:IDictionary.Item返回錯誤的類型
Class SomeClass Implements IComparer(Of C)
Private ReadOnly cache As IDictionary = New Dictionary(Of C, T)
Public Function compare(ByVal chr1 As C, ByVal chr2 As C) As Integer Implements IComparer(Of C).Compare
Dim fit1 As T = Me.fit(chr1)
Dim fit2 As T = Me.fit(chr2)
Dim ret As Integer = fit1.CompareTo(fit2)
Return ret
End Function
Public Overridable Function fit(ByVal chr As C) As T
Dim fits As T = Me.cache.Item(chr) '<----- Here it fails
If fits Is Nothing Then '<------ False, because fits == 0.0
fits = fitnessFunc.calculate(chr)
Me.cache.Add(chr, fits)
End If
Return fits
End Function
End Class
我的cache
爲空。 MSDN表示IDictionary.Item
返回帶有指定鍵的元素,如果該鍵不存在,則返回Nothing
。但是,我的fits
類型爲Double
,並且由於未知原因,它等於0.0
,但它必須是Nothing
。我有點困惑,我怎麼才能讓它正常工作?非常感謝幫助。
您應該將緩存定義爲'IDictionary(Of C,T)'否則它將是無類型的,即它將返回對象。 –