gpt4 book ai didi

c# - 避免在基类中使用泛型列表——我应该对字典遵循相同的规则吗?

转载 作者:太空狗 更新时间:2023-10-30 00:49:53 25 4
gpt4 key购买 nike

我是 advised改变 List<string>属性(property)给Collection<string> , 在基类中,因为它更适合继承。

此“规则”被引用:https://msdn.microsoft.com/en-us/library/ms182142.aspx

System.Collections.Generic.List is a generic collection that is designed for performance and not inheritance. System.Collections.Generic.List does not contain virtual members that make it easier to change the behavior of an inherited class. The following generic collections are designed for inheritance and should be exposed instead of System.Collections.Generic.List.

System.Collections.ObjectModel.Collection<T>

System.Collections.ObjectModel.ReadOnlyCollection<T>

System.Collections.ObjectModel.KeyedCollection<TKey, TItem>

类似的规则是否适用于Dictionary<string, string>

我问是因为它也在System.Collections.Generic中命名空间。或者也许我误解了该规则仅适用于 Lists .

顺便说一句,Dictionary目的是保存错误(以类似于 ModelState 的格式)。我目前不确定我将在哪个阶段向其中添加错误。


如果我应该避免Dictionary<string, string>在基类中,我应该在它的位置使用什么?

我遇到过KeyedCollection但不确定这是否是一个好的替代品。

最佳答案

Dictionary<TKey, TValue>没有任何可以用来代替它的基类。使用接口(interface)( IDictionary<TKey, TValue>IReadOnlyDictionary<TKey, TValue> - 均由 Dictionary 实现)可能更好,但这取决于您的需要。

请注意,很难表达属性是返回内部存储还是克隆(因此当调用者更改对象时会发生什么)——您可能需要考虑 IEnumerable<T>或将字典隐藏为实现细节的方法。

关于c# - 避免在基类中使用泛型列表——我应该对字典遵循相同的规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35121118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com