使用预定义键创建 C# 字典

3
我希望能够定义一个可重用的字典。即:我可以创建该字典对象,而无需向其填充所需的值。
以下是目前我拥有的代码(请注意:此代码未经过测试,仅为示例):
public Dictionary<string, string> NewEntryDictionary()
{
    Dictionary<string, string> dic = new Dictionary<string, string>();

    // populate key value pair
    foreach(string name in Enum.GetNames(typeof(Suits))
    {
        dic.Add(name, "");
    }

    return dic;
}

最终结果应该是一个带有预定义键集的新字典对象。但我想避免以这种方式做。

4
为什么你希望避免用这种方法?如果你不告诉我们你对现有选项的不满意之处,我们就无法帮助你想出不同的方法。 - Jon Skeet
我认为它创建了比所需更多的代码。我还认为它涉及所有这些迭代,我认为这是低效的。 - visc
你如何期望在不进行N次迭代的情况下填充一个包含N个项目的字典? - Jon Skeet
我在思考是否有一种类似于定义枚举的方法来完成这个。 - visc
不,没有这样的东西——在我看来,如果有这样的东西,那将是相当奇怪的。 - Jon Skeet
2个回答

5

你的关注点到底是你的代码量还是代码效率并不是很清楚。从效率的角度来看,它是可以接受的——时间复杂度为O(N),但如果你要向字典中填充N个条目,则很难避免。

但是你可以使用LINQ使源代码更短:

public Dictionary<string, string> NewEntryDictionary()
{
    return Enum.GetNames(typeof(Suits)).ToDictionary(name => name, name => "");
}

当然,那不会更有效率...只是代码更短。

0

如果你只想根据枚举保存值,那么请使用Dictionary<Suits,String>而不是Dictionary<String,String>

其他的,Jon已经说过了。使用LinQ可以让代码看起来更加“花哨”,但这并不能提高性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接