我有需要返回其爲CA1819狀態,不應該做的陣列,字典和列表四個屬性。它還指出返回陣列的副本具有很大的性能影響。所以要嘗試解決這個問題,我將返回的值轉換爲IReadOnlyList等,但我不確定這會如何影響性能。屬性返回數組和嵌套的字典 - CA1819
這裏是前三個屬性:
Public Property ScheduledDates As List(Of Date)
Get
Return CType(ws_ScheduledDates, IReadOnlyList(Of Date))
End Get
Set(value As List(Of Date))
ws_ScheduledDates = value
End Set
End Property
Public Property ExcludedDates As List(Of Date)
Get
Return CType(ws_ExcludedDates, IReadOnlyList(Of Date))
End Get
Set(value As List(Of Date))
ws_ExcludedDates = value
End Set
End Property
Public Property RecurringDaysOfMonth As Boolean()
Get
Return CType(ws_RecurringDaysOfMonth, IReadOnlyList(Of Boolean))
End Get
Set(value As Boolean())
ws_RecurringDaysOfMonth = value
End Set
End Property
這是解決CA1819概述了這一問題的可以接受的方式?它會對性能產生什麼影響?
我的第四個屬性需要返回嵌套的詞典:
Public Property RecurringWeekDays As Dictionary(Of String, Dictionary(Of String, Boolean))
Get
Return CType(ws_RecurringWeekDays, IReadOnlyDictionary(Of String, Dictionary(Of String, Boolean)))
End Get
Set(ByVal value As Dictionary(Of String, Dictionary(Of String, Boolean)))
ws_RecurringWeekDays = value
End Set
End Property
'Example
'New Dictionary(Of String, Dictionary(Of String, Boolean)) From {
'{"Monday", New Dictionary(Of String, Boolean) From
' {
' {"First", False},
' {"Second", False},
' {"Third", False},
' {"Fourth", False},
' {"Last", False}
' }
' },
' {"Tuesday", New Dictionary(Of String, Boolean) From
' {
' And so on...
在這種情況下,嵌套的字典都無法投射到IReadOnlyDictionary。那麼這是否意味着它們仍然是可變的?還是不是因爲他們的父母是不可變的?
在此先感謝
謝謝。我是否也需要在setter中將值賦給IReadOnlyList?否則,這個類實例中的數組是否指向可能被更改或置於類之外的內存? – Daniel 2014-10-11 16:43:51