You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Hashtable的IsFixedSize方法何时返回True?问题解析

问题原因

你代码里的new Hashtable(3)传入的参数是哈希表的初始容量,它仅用于设置哈希表初始化时分配的存储空间大小,当元素数量超过这个值时,哈希表会自动扩容,本质还是可变大小的集合,因此IsFixedSize返回False。

IsFixedSize属性的核心作用是判断集合是否禁止添加或删除元素,和初始化时指定的容量没有任何关联。

让IsFixedSize返回True的示例代码
using System;
using System.Collections;

class Program 
{
    static void Main()
    { 
        Hashtable originalHashtable = new Hashtable(3)
        {
            { 1, "One" },
            { 2, "Two" },
            { 3, "Three" }
        };
        // 通过FixedSize方法创建固定大小的哈希表包装器
        Hashtable fixedSizeHashtable = Hashtable.FixedSize(originalHashtable);
        
        Console.WriteLine(fixedSizeHashtable.IsFixedSize); // 输出True

        // 验证固定大小特性:尝试添加元素会抛出异常
        try
        {
            fixedSizeHashtable.Add(4, "Four");
        }
        catch (NotSupportedException ex)
        {
            Console.WriteLine(ex.Message); // 输出"集合是固定大小的。"
        }
    }
}

说明

  • 使用Hashtable.FixedSize()静态方法可以生成一个原哈希表的固定大小包装器,这个包装器不允许执行添加或删除元素的操作,因此IsFixedSize会返回True。
  • 该包装器是原哈希表的视图,修改原哈希表中的元素值会同步反映到包装器中,但包装器本身无法新增或删除条目。

内容的提问来源于stack exchange,提问作者Savan Gangani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:42:43