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