在C#中向字典添加一个数组

9

我已经尝试阅读了其他关于这个主题的帖子,但还是无法完全理解。

我有一个在C#中的列表,我想要将其放入一个字典中,所有的键都相同。该列表如下:

string[] IN ={"Against","Like","Upon","Through","Of","With","Upon","On","Into","From","by","that","In","About","For"
    ,"Along","Before","Beneath","At","Across","beside","After","Though","Among","Toward","If"};

我希望创建并填充一个词典,其中键名是“IN”(数组名称),然后将数组中的每个字符串放在词典中。
这是我编写的创建词典的代码(我不确定是否正确):
Dictionary<string, List<string>> wordDictionary = new Dictionary<string, List<string>> ()

但我不确定如何填充字典。

非常感谢您的帮助,因为这是我第一次尝试使用字典,并且我对C#还很陌生。


1
你是真的想要添加字符串数组“IN”,还是想要添加变量的名称?此外,这个需求似乎是一种不好的结构方式...我敢打赌,如果你解释一下你想要实现什么,我们可以提供更好的解决方案。 - myermian
5个回答

18

数组是 string[],而不是 List<string>,所以只需这样做:

Dictionary<string, string[]> wordDictionary = new Dictionary<string, string[]>();

现在您可以像往常一样添加您的数组。

wordDictionary.Add("IN", IN);

或者:

wordDictionary.Add("IN", new string[] {"Against","Like","Upon","Through","Of","With","Upon","On","Into","From","by","that","In","About","For","Along","Before","Beneath","At","Across","beside","After","Though","Among","Toward","If"});

Minitech,非常感谢,这个方法很有效!我现在的问题是,我应该怎样访问字典中包含数组的每个字符串? - miltonjbradley
@miltonjbradley:像任何其他数组一样,可以通过索引(wordDictionary["IN"][0] == "Against")或循环(foreach(string word in wordDictionary["IN"]))来访问。 - Ry-

2
Dictionary.Add("IN", new List<string>(IN));

如果您想保留字典的当前签名,可以不做任何更改。

如果您将其更改为Dictionary<string, string[]>,那么您只需要:

Dictionary.Add("IN",IN);

1

你目前拥有的是一个字符串 数组,而不是列表 - 所以应该是:

Dictionary<string, string[]> wordDictionary  = new Dictionary<string,string[]> ()

然后你可以像这样添加项目:

wordDictionary.Add("IN" , IN);

0

你真的需要将数组转换为字符串吗?在你的字典中,你完全可以使用string[]而不是List:

var wordDictionary = new Dictionary<string, string[]>();
wordDictionary.Add("IN", IN);

但是如果你真的想把你的字符串数组转换成列表:

var wordDictionary = new Dictionary<string, List<string>>();
wordDictionary.Add("IN", IN.ToList());

0

将数组(不是列表)添加到字典的另一种方法是使用集合初始化器:

var wordDictionary = new Dictionary<string, string[]> { "IN", IN };

这与以正常方式创建字典,然后调用 Add("IN", IN) 完全相同。


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