C# C-如何创建固定大小的分类列表?

C# C-如何创建固定大小的分类列表?,c#,collections,sortedlist,C#,Collections,Sortedlist,我只发现SortedList包含IsFixedSize属性,但我在任何地方都找不到这个简单问题的答案。这个属性是从IDictionary继承的,因为SortedList实现了它。对于SortedList的默认实现,此属性将始终返回false,这只是因为默认实现的大小不是固定的 固定大小意味着集合不允许任何添加或删除类型操作,也不允许任何会更改基础集合的操作,而不仅仅是在再次通过包装器构造后所包含的元素。所以,如果你想要一个固定大小的分类列表,你应该创建你自己的包装器,比如 public clas

我只发现SortedList包含IsFixedSize属性,但我在任何地方都找不到这个简单问题的答案。

这个属性是从IDictionary继承的,因为SortedList实现了它。对于SortedList的默认实现,此属性将始终返回false,这只是因为默认实现的大小不是固定的

固定大小意味着集合不允许任何添加或删除类型操作,也不允许任何会更改基础集合的操作,而不仅仅是在再次通过包装器构造后所包含的元素。所以,如果你想要一个固定大小的分类列表,你应该创建你自己的包装器,比如

public class SortedListFixed<TKey, TValue> : SortedList<TKey, TValue>
{
    private SortedList<TKey, TValue> _list;

    public bool IsFixedSize => true;

    /** ctors **/

    public void Add(TKey key, TValue value) => 
        throw InvalidOperationException("This collection is fixed size");

    public bool Remove (TKey key) =>
        throw InvalidOperationException("This collection is fixed size");

    /** etc. for all inherited size-modifying methods **/
}

请注意,这与其说是一个整体实现,不如说是一个指南。

从这里开始:相关:您好。您能解释一下为什么需要创建一个固定大小的分类列表吗?也许,如果您解释为什么需要这样做,我们可以建议其他解决方案,以实现您的最终目标。固定大小->array@LasseVågsætherKarlsen我需要它作为游戏中的装备,库存容量有限。我知道我可以检查Count属性,但我只是想知道是否有内置的方法可以做到这一点。我猜TrimToSize也是如此?@Tom TrimToSize也属于大小修改方法。
public static class SortedListExtensions
{
    public static SortedListFixed<TKey, TValue> ToFixedSize<TKey, TValue>(
        this SortedList<TKey, TValue> list) => new SortedListFixed<TKey, TValue>(list);

}