簡體   English   中英

如何在C#中將字典初始化為(鍵,值,值)對

[英]how to initialize dictionary as (key,value,value) pair in C#

我想將值存儲為鍵,值,值對。 我的數據類型

Key -> int & both values -> ulong,

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

如果我使用類或結構,那么我如何獲取值。

創建一個存儲值的結構:

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

字典初始化:

Dictionary<int, ValuePair> dictionary = new Dictionary<int, ValuePair>();

如果你使用int作為密鑰,也許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;

在System命名空間中創建一個Tuple類:

public 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方法的靜態Tuple類,因此您可以獲得構造函數中不可用的類型推斷:

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#元組兼容!)。

我不確定我是否正確理解了你的問題,但是如果你想在Dictionary的值部分存儲多個值,你可以這樣做:

var dic = new Dictionary<int,KeyValuePair<ulong,ulong>>();

您可以像這樣在字典中使用insert:

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);
}

在C#4中,您將獲得值,值對的元組類型。

有一篇MSDN文章描述了它背后的類型和設計決策。

也許你必須定義一個類說類Pair來保存你的兩個值,並使用int作為鍵。

您可以使用KeyValuePair

Dictionary<int, KeyValuePair<ulong,ulong>> vals = new Dictionary<int, KeyValuePair<ulong, ulong>>();

查看Wintellect.PowerCollections命名空間,它們具有特殊結構Pair <(Of)和集合可以使用它,或者您需要編寫自己的Pair類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM