Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用预定义键C创建字典#_C#_Dictionary - Fatal编程技术网

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

C# 使用预定义键C创建字典#,c#,dictionary,C#,Dictionary,我正在寻找一种定义字典以供重用的方法。我可以创建dictionary对象,而不必用我想要的值填充它 以下是我目前所做的(注意:代码未测试,只是示例) 公共字典NewEntryDictionary() { Dictionary dic=新字典(); //填充键值对 foreach(Enum.GetNames中的字符串名(typeof(suites)) { dic.添加(名称“”); } 返回dic; } 最终结果应该是一个具有预定义键集的新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 => "");
}