Другие языки программирования и технологии

С# - нужно сделать так, чтобы консоль читала слова, как переменные, а не просто слова...

Я только, только поступил учиться на программиста и первое что понял - от преподов толку, как от бревна... Вообще я люблю сам доходить (практическим методом), но сейчас реально застрял - Мне нужно решить задачку, в консольном приложении, связанную с номерами месяцев... Я задаю "интовые" переменные где имя переменной - название месяца, а его значение номер месяца... И еще одна интовая переменная - int R = Convert.Toint (Console.ReadLine()); в общем мне нужно, чтобы когда выполнялось (Console.ReadLine()) я писал название переменной (месяца), а он вместо названия подставлял туда значение этой переменной, но я понимаю, что вместо Console.ReadLine должно быть что-то другое, потому что когда я пишу в консоль "январь" он не обращается к переменной и не вставляет в R его номер, а просто пытается вставить слово, что естественно не возможно, так как "инт" это целочисленный формат переменной и выходит ошибка... Так как (если есть способ) заставить консоль читать слова, не как слова, а как переменные и вводить в R именно их значения??? Что должно быть здесь - int R = Convert.Toint(....);???
Davron Inatov
Davron Inatov
11 405
Вы выбрали не самую подходящую задачу для обучения.
Вам стоит отказаться от переменных в данном случае совсем, а вместо этого использовать ассоциативный массив, А вернее нужен тип данных Dictionary, т. к. ассоциативных массивов нет в c#
Вот пример с типом данных Dictionary:
Ha430T Бардаковский
Ha430T Бардаковский
908
Лучший ответ
Арзу Сафаров Автору вопроса - крайне не рекомендую Dictionary в этом случае.
Забыл предупредить — есть у меня маленькое условие: ровно в полночь приду к вам в гости и буду до рассвета вопросы задавать. Сумеете ответить — столик ваш! А НЕ СУМЕЕТЕ — ПЕНЯЙТЕ НА СЕБЯ! ВЕК МЕНЯ ПОМНИТЬ БУДЕТЕ, АХ-ХА-ХА-ХА-ХА-ХА-ХА-ХА!!!

«Ух ты, говорящая рыба!» (Саакянц)
То, что тебе нужно (а на самом деле - нафиг не нужно) называется динамическим программированием и в C# и других компилируемых языках не поддерживается. Если очень хочешь извратиться, это можно сделать через свойства и reflection, но лучше подумай, как сделать это по-другому. Еще раз повторюсь: вся эта лабуда тебе нахрен не уперлась, исходи из этого постулата.
@v@tar ***
@v@tar ***
99 441
Ээээ.... Зачем, когда всё есть в CultureInfo?

using System;
using System.Globalization;

public class Test
{
public static void Main() {
//vvv----Если принципиально русский, иначе используйте CurrentCulture
var ci = CultureInfo.GetCultureInfo("ru-RU");
var dti = ci.DateTimeFormat;
var index = 0;
do {
Console.Write("Месяц:");
index = Array.IndexOf(dti.MonthNames, ci.TextInfo.ToTitleCase(Console.ReadLine().ToLower())) + 1;
} while(index == 0);
Console.WriteLine("Номер месяца {0}:", index);
}
}

https://www.ideone.com/oZlXFO

Будет спрашивать название месяца, пока оно не найдется в массиве имен CultureInfo и соотв. даст номер.
АС
Арзу Сафаров
84 764
Арзу Сафаров Не надо Вам Dictionary. Зачем дублировать информацию в т. ч. о названиях месяца, когда ВСЁ есть в .NET?
Тем более массивом гораздо проще и эффективнее было воспользоваться в этом случае, чем Dictionary, который несет дополнительные расходы и при поиске по ключу и в памяти.
Вы-же сами составляете массив месяцев и знаете, что повторений нет.
не как ето не сде лать