1

Добрый день, подскажите пожалуйста - быть может в С# существует какой-либо способ встроить в код программы то, что введёт пользователь? Понимаю, что звучит неоднозначно, так что приведу ориентировочный пример того, что именно я имею в виду:

string inputcons = console.readline();
Function(newclass.'inputcons');

Если способ существует - объясните, пожалуйста, синтаксис (или дайте ссылку) и подводные камни(в JS, насколько мне известно, что-то такое существует, но с большими косяками). Заранее спасибо и прошу прощения за, быть может, глупый вопрос.

  • вы что конкретно сделать то хотите? – teran May 06 '17 at 20:40
  • Ну, я пытаюсь сделать функцию, которая будет шарить по list с переменными класса, хранящего в себе порядка 20 признаков. По сути она должна делать одно и то же, просто обращаясь к разным признакам этих переменных и единственное решение, которое я пока придумал(за исключением надежды на существование возможности, описанной в вопросе) - написать 20 одинаковых функций, меняя только обращение к переменной. Это, вероятно, очень глупо - но у меня, наверное, минимальный скилл из всех возможных. – AlxBryer May 06 '17 at 20:50

1 Answers1

1

Вы используете неподходящую структуру данных.

В C# классы, в отличие от Javascript, не работают как словари с ключами, соответствующими именам полей/свойств. Если вы хотите обращение по строковому имени, воспользуйтесь классом Dictionary<string, _>.

Например, если у вас параметры числовые, то вы объявляете

Dictionary<string, int> newclass = new Dictionary<string, int>();

заполняете ваши параметры:

newclass["длина"] = 25;

и пользуетесь:

string s = Console.ReadLine();
if (newclass.TryGetValue(s, out int v))
    Function(v);
else
    // такого имени параметра нету, ругайтесь на юзера
VladD
  • 206,799
  • Я сейчас по настоящему понял только одну вещь: мои "программы" в принципе не должны включаться, т.к. я смог осознать хорошо если половину от написанного вами. В любом случае, большое спасибо за ответ. Может быть вы согласитесь посмотреть хотя бы небольшой сегмент моего "кода", строк на 60 и указать на самые плохие ошибки(или подсказать лучший способ суицида) ? – AlxBryer May 06 '17 at 21:26
  • @AlxBryer: Ну, я могу попробовать глянуть, но намного больше пользы вам принесёт просто любая книжка по C#. – VladD May 06 '17 at 21:28
  • Да, вероятно вы правы. Не буду тогда вас больше донимать, спасибо. – AlxBryer May 06 '17 at 21:36
  • @AlxBryer: Не, я не в том смысле :) Выкладывайте код, посмотрим. Сейчас открою чат. – VladD May 06 '17 at 21:36
  • @AlxBryer: Заходите сюда: http://chat.stackexchange.com/rooms/58323/discussion-between-alxbryer-and-vladd – VladD May 06 '17 at 21:40
  • Да нет, нет - я ни в коем случае не воспринял ваше сообщение как пассивно-агрессивное, просто подумал, что и правда не стоит утруждать профи своим кодом уровня "Неделю пробую в C# и пытаюсь написать логику приложения, для создания которого в любом случае требуются знания на много порядков превосходящие мои." У меня даже и достаточной репутации для разговоров в чате нет :) – AlxBryer May 06 '17 at 21:47
  • @AlxBryer: Странно, я попробовал включить вам доступ в чат, но это, видимо, не сработало. – VladD May 06 '17 at 21:49
  • Да, к сожалению, по-прежнему не работает. Ну да ничего, попробую всё-таки как-нибудь разобраться и найти какую-либо из вышеуказанных книг. Большое спасибо, правда - я совсем не ожидал такой готовности помочь незнакомцу. – AlxBryer May 06 '17 at 22:00
  • @AlxBryer: Странно, должно было работать, зарепортил баг :) Ну окей, вы спрашивайте, если появятся ещё вопросы. Ну и да, стоит почитать книги, они многое расставляют на места. Удачи! – VladD May 06 '17 at 22:08