Как установить значения: KeyValuePair‹KeyValuePair‹String,String›,int›

С# Я использую KeyValuePair в качестве ключа в моей основной KeyValuePair. Вот моя проблема:

Если у меня есть "KeyValuePair", объявление будет следующим:

KeyValuePair<String,String> varName = new KeyValuePair<String,String>("String 1","String 2");

Как мне объявить это, если у меня есть следующее:

KeyValuePair<KeyValuePair<String,String>,int>

Я так потерялся в синтаксисе здесь. Пожалуйста, помогите мне!

Благодарю вас!


person Кристиян Костадинов    schedule 23.04.2016    source источник
comment
Чувак, какой язык... какой код ты пробовал... если бы ты сказал, было бы лучше, я думаю...   -  person Manish    schedule 23.04.2016
comment
Извините, я думал, что это было достаточно ясно. Плохо, это С#   -  person Кристиян Костадинов    schedule 23.04.2016


Ответы (1)


Он у вас почти есть, но проще всего разделить его на две инициализации.

Во-первых, инициализируйте KeyValuePair<string, string>, а затем используйте его вместе с int для инициализации KeyValuePair<KeyValuePair<string, string>, int>:

var pair = new KeyValuePair<string, string>("string 1", "string 2");
var varName = new KeyValuePair<KeyValuePair<string, string>, int>(pair, 10);

Вы можете значительно упростить это, если напишете вспомогательный метод следующим образом:

public static KeyValuePair<T1, T2> MakeKeyValuePair<T1, T2>(T1 key, T2 value)
{
    return new KeyValuePair<T1, T2>(key, value);
}

Используя это, вы можете сделать следующее:

var pair    = MakeKeyValuePair("string 1", "string 2");
var varName = MakeKeyValuePair(pair, 10);

За этим намного проще следить, и вам не нужно явно указывать типы.

Или, если вы предпочитаете (лично я не предпочитаю это):

var varName = MakeKeyValuePair(MakeKeyValuePair("string 1", "string 2"), 10);

Но если вы действительно хотите сделать это трудным путем:

var varName = new KeyValuePair<KeyValuePair<string, string>, int>(
    new KeyValuePair<string, string>("string 1", "string 2"), 
    10);
person Matthew Watson    schedule 23.04.2016
comment
Да, я думал об этом, но зачем легко, если я могу сделать это трудным путем. :D Не могли бы вы помочь с трудным вопросом, как смешать эти две строки кода в одну? - person Кристиян Костадинов; 23.04.2016
comment
И без всяких дополнительных методов: new KeyValuePair<KeyValuePair<String,String>,int>(new KeyValuePair<String,String>("String 1","String 2"), 42). - person IS4; 23.04.2016
comment
@КристиянКостадинов Конечно, смотрите мою последнюю правку. :) Хорошего дня! - person Matthew Watson; 23.04.2016
comment
Благодарю вас! ты лучший! :П - person Кристиян Костадинов; 23.04.2016