【问题标题】:Which name for a "smart" dictionary (hashtable)?“智能”字典(哈希表)的名称是什么?
【发布时间】:2009-11-14 04:35:17
【问题描述】:

我正在寻找一个自定义字典的好名称,如果它不存在,它会使用委托自动初始化请求的键的值。索引器实现应该有助于理解它的作用:

    public V this[K key]
    {
        get
        {
            V value;
            if (!_dictionary.TryGetValue(key, out value))
            {
                value = _defaultValueGenerator(key);
                _dictionary[key] = value;
            }
            return value;
        }
        set
        {
            _dictionary[key] = value;
        }
    }

我的问题不在于代码,它运行良好,但我似乎无法为这个类找到合适的名称......我想过AutoInitDictionary,但它听起来不对,而且没有t 真正传达了“所有键都可以假定存在”的想法。

你会如何命名这样一个类?任何建议将不胜感激。


PS:如何使用它的示例:

var charFrequencies = new AutoInitDictionary<char, int>(key => 0);
foreach(char c in text)
    charFrequencies[c]++;

【问题讨论】:

  • @Eric:好吧,我不这么认为......但无论如何感谢你的好笑;)

标签: c# .net dictionary naming-conventions


【解决方案1】:

Python 正好有这种字典,他们称之为defaultdict

【讨论】:

  • 我喜欢它...遵循 .NET 命名风格,类似于DefaultDictionary。唯一困扰我的是它听起来像是“默认类型的字典”......
【解决方案2】:

我建议使用 FactoryDictionary 选项。

【讨论】:

  • 不错...不过它描述的是实现,而不是行为
【解决方案3】:

VirtualDictionary 呢?

vir·tu·al (vûr'chōō-əl):

存在的或产生的实质或效果,但实际上并不存在,形式

存在于头脑中,尤其是作为想象的产物

在权力、力量或效果上如此,尽管实际上或明示如此

计算机软件临时模拟或扩展

所有 4 个定义都与您的实现有些相关。

编辑:即使DynamicDictionary 也会很好。

【讨论】:

    【解决方案4】:

    智能词典怎么样?我认为你的主题已经足够好了。 ;)

    【讨论】:

      【解决方案5】:

      完整词典?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-09
        • 1970-01-01
        • 2012-04-03
        • 2011-01-04
        • 2011-07-07
        • 2023-03-16
        相关资源
        最近更新 更多