объявление кортежа KeyValuePair в C # - PullRequest
0 голосов
/ 01 марта 2019

Ради моего кода мне нужен кортеж, который имеет 2 компонента, оба из которых являются KeyValuePairs.Тем не менее, за свою жизнь я даже не могу понять, как объявить эту вещь.У меня он работал с обычными строками

Tuple<string, string> t = new Tuple<string, string>("abc", "123");

Но мне нужно иметь пары KeyValue вместо строк, я пробовал что-то подобное, но он отказывается компилировать, говоря, что конструктор не может принимать 2 аргумента.

Tuple<KeyValuePair<string, string>, KeyValuePair<string,string>> a = 
    new Tuple<KeyValuePair<string, string> ("a", "1"), 
    KeyValuePair<string, string> ("b", "2");

Любое руководство будет с благодарностью.Пожалуйста, не стесняйтесь использовать это, если это поможет вам: https://dotnetfiddle.net/y2rTlM

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Или, немного короче:

using KVPS = System.Collections.Generic.KeyValuePair<string, string>;

namespace Test 
{
    class Program
    {
        static void Main(string[] args)
        {
            Tuple<KVPS, KVPS> a =
                Tuple.Create(
                    new KVPS("a", "1"),
                    new KVPS("b", "2")
                    );
            Console.WriteLine($"{a.Item1.Key} {a.Item1.Value} : {a.Item2.Key} {a.Item2.Value}");
        }
    }
}   

Это может быть полезно, если у вас много кортежей и подобных им элементов.

0 голосов
/ 01 марта 2019

Использование:

Tuple<KeyValuePair<string, string>, KeyValuePair<string, string>> a =
        new Tuple<KeyValuePair<string, string>, KeyValuePair<string, string>>(
            new KeyValuePair<string, string>("a", "1"),
            new KeyValuePair<string, string>("b", "2")
        );
...