@filopoj231

Как заменить название словаря в методе TryGetValue?

есть несколько словарей, которые отличаются по названию одним символом в конце. Например dictionary1 или dictionary2

далее по коду идет "if (dictionary.TryGetValue*"
мне необходимо в этом методе подставить вместо "dictionary" словарь, который выберет пользователь. Т.е. принимать из консоли последний символ указывающий на конкретный словарь
я попытался считать с консоли значение этого символа и сложить со строкой "dictionary", чтобы на выходе получить "dictionary1" например. Но если я подставлю string, в котором содержится это значение в метод .TryGetValue, то VS не даст этого сделать

как я могу поступить? Можно ли как-то в методе .TryGetValue использовать значение, которое хранится в string'е (т.е. не использовать имя конкретного словаря, а подставлять сгенерированное название в зависимости от выбора пользователя)?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 3
vabka
@vabka Куратор тега C#
Токсичный шарпист
(Пояснение идей других отвечающих)
Как вариант:
var allDictionaries = new Dictionary<string, Dictionary<string, string>> {
  ["1"] = new Dictionary<string, string>(),
  ["2"] = new Dictionary<string, string>()
};

var input = Console.ReadLine();
var selectedDictionary = allDictionaries[input];
var key = Console.ReadLine();
var value = selectedDictionary[key];
Console.WriteLine(value);
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Начните с банального, если пользователь ввёл "1" то dictionary1.TryGetValue иначе если пользователь ввёл ... Возможно потом, вы осознаете списки, где под нужным индексом будет лежать нужный словарь или словари, если пользователь будет вводить что-то сложнее цифры.
Ответ написан
Комментировать
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Можно занести все dictionary в общий Dictionary<string, dictionary> и брать их оттуда по key.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы