访问C#字典

时间:2012-08-02 17:43:26

标签: c# dictionary

我有一个颜色词典,如下所示。

Dictionary<string, List<System.Drawing.Color>> channelColorInformation = 
    new Dictionary<string, List<System.Drawing.Color>>();

List<System.Drawing.Color> colorInfo = new List<System.Drawing.Color>();

System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml("#FFF0F8FF");
colorInfo.Add(color);
color = System.Drawing.ColorTranslator.FromHtml("#FFFAEBD7");
colorInfo.Add(color);
color = System.Drawing.ColorTranslator.FromHtml("#FF00FFFF");
colorInfo.Add(color);
channelColorInformation.Add("Channel1", colorInfo);

如何从索引0,1,2的System.Drawing.Color字典中获取Channel1信息?

4 个答案:

答案 0 :(得分:3)

有两种不同的选项,具体取决于字典中是否缺少条目错误。如果这表示错误,您可以使用索引器获取它:

List<Color> colors = channelColorInformation["Channel1"];
// Access the list in the normal way... either with an indexer (colors[0])
// or using foreach

如果没有键“Channel1”的条目,则会抛出异常。

否则,请使用TryGetValue

List<Color> colors;
if (channelColorInformation.TryGetValue("Channel1", out colors))
{
    // Use the list here
}
else
{
    // No entry for the key "Channel1" - take appropriate action
}

答案 1 :(得分:2)

这样的事情:

List<Color> listForChannel1 = channelColorInformation["Channel1"];
Color c1 = listForChannel1[0];    
Color c2 = listForChannel1[2];    
Color c3 = listForChannel1[3];

<强>更新

@Jon的回答也是相关的,因为它显示了两个选项来处理字典中不存在密钥的可能性。

答案 2 :(得分:0)

var result = channelColorInformation["Channel1"]

答案 3 :(得分:0)

每个列表元素都是List<Color>个实例,因此您可以使用indexer来访问单个项目:

List<Color> channel = channelColorInformation["Channel1"];
Color index0 = channel[0];
Color index1 = channel[1];
// etc.