как инициализировать словарь как (ключ, значение, значение) пара в C#

В дополнение к отрывку 'опоры' и автосвойствам, существует осуществлять рефакторинг опция позволить Вам выбрать существующее поле и представить его через свойство. Кроме того, если Вам не нравится реализация 'опоры', можно создать собственные отрывки. Кроме того, сторонний инструмент рефакторинга как resharper даст Вам еще больше функций и облегчит создавать более усовершенствованные отрывки. Я рекомендовал бы Resharper, если можно предоставить его.

http://msdn.microsoft.com/en-us/library/f7d3wz0k (По сравнению с 80) .aspx http://www.jetbrains.com/

11
задан Konamiman 15 June 2015 в 09:32
поделиться

9 ответов

Create a structure to store your values:

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

Dictionary initialization:

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

Maybe List is enough, if you use int as key?

List:

List<ValuePair> list = new List<ValuePair>();

ValuePair can be added to the list as following:

list.Add(new ValuePair { Value1 = 1, Value2 = 2 });
17
ответ дан 3 December 2019 в 01:03
поделиться

Вы можете объявить класс, в котором хранятся оба значения, а затем использовать обычный словарь. Например:

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});
14
ответ дан 3 December 2019 в 01:03
поделиться

Создайте класс Tuple в пространстве имен System:

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

И статический класс Tuple с методом 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 #!).

6
ответ дан 3 December 2019 в 01:03
поделиться

В C # 4 у вас будет тип Tuple для вашего значения, пары значений.

Есть статья MSDN , описывающая тип и проектные решения, лежащие в его основе. .

1
ответ дан 3 December 2019 в 01:03
поделиться

Посмотрите на Wintellect.PowerCollections Namespace у них есть специальная структура Pair <(Of) и коллекции для работы с ним, иначе вам нужно будет закодировать свой собственный тип Pair.

0
ответ дан 3 December 2019 в 01:03
поделиться

возможно, вам нужно определить класс, скажем, class Pair, чтобы хранить ваши два значения, и использовать int в качестве ключа.

0
ответ дан 3 December 2019 в 01:03
поделиться

I'm not sure I understand your question correctly, but if you want to store more than one value in the value part of Dictionary, you could do something like this:

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

You can use insert into the dictionary like this:

dic.Add(42, new KeyValuePair<ulong, ulong>(42, 42));
dic.Add(43, new KeyValuePair<ulong, ulong>(43, 43));

And fetch the values like so:

foreach (var a in dic)
{
    Console.WriteLine("Key: {0}, Value1: {1}, Value2: {2}",
        a.Key, a.Value.Key, a.Value.Value);
}
1
ответ дан 3 December 2019 в 01:03
поделиться

This would be an option:

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

If you want to add in a value: Key=1, Pair = {2,3}

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

If you want to retrieve those values:

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

Or simply:

ulong value1 = dictionary[1].Key;
9
ответ дан 3 December 2019 в 01:03
поделиться

You can make use of the KeyValuePair

Dictionary<int, KeyValuePair<ulong,ulong>> vals = new Dictionary<int, KeyValuePair<ulong, ulong>>();
0
ответ дан 3 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: