C# 使用预定义键C创建字典#
我正在寻找一种定义字典以供重用的方法。我可以创建dictionary对象,而不必用我想要的值填充它 以下是我目前所做的(注意:代码未测试,只是示例) 公共字典NewEntryDictionary() { Dictionary dic=新字典(); //填充键值对 foreach(Enum.GetNames中的字符串名(typeof(suites)) { dic.添加(名称“”); } 返回dic; } 最终结果应该是一个具有预定义键集的新dictionary对象。C# 使用预定义键C创建字典#,c#,dictionary,C#,Dictionary,我正在寻找一种定义字典以供重用的方法。我可以创建dictionary对象,而不必用我想要的值填充它 以下是我目前所做的(注意:代码未测试,只是示例) 公共字典NewEntryDictionary() { Dictionary dic=新字典(); //填充键值对 foreach(Enum.GetNames中的字符串名(typeof(suites)) { dic.添加(名称“”); } 返回dic; } 最终结果应该是一个具有预定义键集的新dictionary对象。 但是我想避免这样做。不太清楚
但是我想避免这样做。不太清楚您是否关心您编写的代码量,或者它的效率。从效率的角度来看,这很好-它是O(N),但是如果您用N个条目填充字典,这很难避免 不过,使用LINQ,您完全可以缩短源代码:
public Dictionary<string, string> NewEntryDictionary()
{
return Enum.GetNames(typeof(Suits)).ToDictionary(name => name, name => "");
}
公共字典NewEntryDictionary()
{
返回Enum.GetNames(typeof(suites)).ToDictionary(name=>name,name=>“”);
}
当然,这不会更有效……它只是更短的代码。如果您只想根据枚举保存值,请使用
字典
而不是字典
其他一切,乔恩已经说过了。用LinQ来“想象一下”听着。但这并不能提高性能为什么要避免这样做?如果你不告诉我们你不喜欢当前选项的什么,我们无法帮助你改变。我认为它创建的代码比需要的多。我还认为它涉及所有这些迭代,imo效率低下。你希望如何填充dict有N个项目但没有N个迭代?我想可能有一种方法可以做到这一点,就像你定义枚举一样。不,没有-如果有,我想这会很奇怪。
public Dictionary<string, string> NewEntryDictionary()
{
return Enum.GetNames(typeof(Suits)).ToDictionary(name => name, name => "");
}