如何在C#中将字典初始化为(键,值,值)对

我想将值存储为键,值,值对。 我的数据类型

Key -> int & both values -> ulong, 

如何初始化和获取此类字典的值。 我正在使用VS-2005。

如果我使用类或结构,那么我如何获取值。

创建一个存储值的结构:

 struct ValuePair { public ulong Value1; public ulong Value2; } 

字典初始化:

 Dictionary dictionary = new Dictionary(); 

如果你使用int作为密钥,也许List就足够了?

列表:

 List list = new List(); 

可以将ValuePair添加到list ,如下所示:

 list.Add(new ValuePair { Value1 = 1, Value2 = 2 }); 

您可以声明一个存储两个值的类,然后使用普通字典。 例如:

 class Values { ulong Value1 {get;set;} ulong Value2 {get;set;} } var theDictionary=new Dictionary; theDictionary.Add(1, new Values {Value1=2, Value2=3}); 

这将是一个选项:

 Dictionary> dictionary = new Dictionary>(); 

如果要添加值:Key = 1,Pair = {2,3}

 dictionary.Add(1, new KeyValuePair(2, 3)); 

如果要检索这些值:

 var valuePair = dictionary[1]; ulong value1 = valuePair.Key; ulong value2 = valuePair.Value; 

或者干脆:

 ulong value1 = dictionary[1].Key; 

在System命名空间中创建一个Tuple类:

 public class Tuple { private readonly T1 _item1; private readonly T2 _item2; public Tuple(T1 item1, T2 item2) { this._item1 = item1; this._item2 = item2; } public T1 Item1 { get { return _item1; } } public T2 Item2 { get { return _item2; } } } 

还有一个带有Create方法的静态Tuple类,因此您可以获得构造函数中不可用的类型推断:

 public static class Tuple { public static Tuple Create(T1 item1, T2 item2) { return new Tuple(item1, item2); } } 

然后,当您进入.NET 4.0时,您可以删除这些类,因为它们位于基类库中(并且与F#元组兼容!)。

我不确定我是否正确理解了你的问题,但如果你想在Dictionary的值部分存储多个值,你可以这样做:

 var dic = new Dictionary>(); 

您可以像这样在字典中使用insert:

 dic.Add(42, new KeyValuePair(42, 42)); dic.Add(43, new KeyValuePair(43, 43)); 

并像这样获取值:

 foreach (var a in dic) { Console.WriteLine("Key: {0}, Value1: {1}, Value2: {2}", a.Key, a.Value.Key, a.Value.Value); } 

在C#4中,您将获得值,值对的元组类型。

有一篇MSDN文章描述了它背后的类型和设计决策。

也许你必须定义一个类说类Pair来保存你的两个值,并使用int作为键。

您可以使用KeyValuePair

 Dictionary> vals = new Dictionary>(); 

查看Wintellect.PowerCollections命名空间,它们具有特殊结构Pair <(Of)和集合可以使用它,或者您需要编写自己的Pair类型。