如何在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类型。