我想将值存储为键、值、值的形式。我的数据类型是
Key -> int & both values -> ulong,
如何初始化并提取这种字典的值。 我正在使用VS-2005。
如果我使用类或结构体,则如何提取值。
我想将值存储为键、值、值的形式。我的数据类型是
Key -> int & both values -> ulong,
如何初始化并提取这种字典的值。 我正在使用VS-2005。
如果我使用类或结构体,则如何提取值。
struct ValuePair
{
public ulong Value1;
public ulong Value2;
}
字典的初始化:
Dictionary<int, ValuePair> dictionary = new Dictionary<int, ValuePair>();
也许使用列表(List)作为键使用整数就足够了吗?List<ValuePair> list = new List<ValuePair>();
可以按照以下方式将ValuePair
添加到list
中:
list.Add(new ValuePair { Value1 = 1, Value2 = 2 });
class Values {
ulong Value1 {get;set;}
ulong Value2 {get;set;}
}
var theDictionary=new Dictionary<int, Values>;
theDictionary.Add(1, new Values {Value1=2, Value2=3});
这是一个选项:
Dictionary<int, KeyValuePair<ulong, ulong>> dictionary = new Dictionary<int, KeyValuePair<ulong, ulong>>();
如果您想添加一个值:Key=1,Pair={2,3}
dictionary.Add(1, new KeyValuePair<ulong, ulong>(2, 3));
如果你想要获取那些值:
var valuePair = dictionary[1];
ulong value1 = valuePair.Key;
ulong value2 = valuePair.Value;
或者简单地说:
ulong value1 = dictionary[1].Key;
KeyValuePair
由一个 键 和一个 值 组成。OP 想要存储 两个值,因此虽然 KeyValuePair
可以解决问题,但它并不是一个很好的“语义”匹配。 - LukeHpublic class Tuple<T1,T2>
{
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方法,以便您获得构造函数上不可用的类型推断:
public static class Tuple
{
public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2)
{
return new Tuple<T1, T2>(item1, item2);
}
}
然后,当你开始使用.NET 4.0时,你可以删除这些类,因为它们在基础类库中已经存在(并且与F#元组兼容!)。
我不确定我正确理解了你的问题,但如果你想在字典的值部分存储多个值,你可以这样做:
var dic = new Dictionary<int,KeyValuePair<ulong,ulong>>();
您可以像这样使用字典的插入操作:
dic.Add(42, new KeyValuePair<ulong, ulong>(42, 42));
dic.Add(43, new KeyValuePair<ulong, ulong>(43, 43));
然后像这样获取值:
foreach (var a in dic)
{
Console.WriteLine("Key: {0}, Value1: {1}, Value2: {2}",
a.Key, a.Value.Key, a.Value.Value);
}
KeyValuePair
由一个 键 和一个 值 组成。OP 想要存储 两个值,所以虽然 KeyValuePair
可以实现这个目的,但它不是一个很好的“语义”匹配。 - LukeH您可以使用KeyValuePair
Dictionary<int, KeyValuePair<ulong,ulong>> vals = new Dictionary<int, KeyValuePair<ulong, ulong>>();
看看Wintellect.PowerCollections Namespace,他们有特殊的结构Pair<(Of )和集合来处理它,否则你需要编写自己的Pair类型。