C# как передать строку в функцию и использовать ее для чего-то в строке кода
Проблема вот в чем,
Я пытался создать переменную и передать ее в функцию, которая имеет дело со строками.
Функция, которую я пытаюсь создать, должна использовать строковую переменную и использовать ее в строке кода.
Variable1: строка, переданная в функцию, которая отправляет имя для Variable2
Переменная 2: число, которое функция должна увеличить на единицу, если переменная 1 сообщает функции, что переменная 2 должна использоваться в функции.
В Примере, Имя_переменной = Переменная1
public static void IncrementVariable(string VarName) { VarName++ }
Видишь, что я делаю? Я пытаюсь использовать Variable1, который дает функции имя Variable2, и использовать его для изменения значения Variable2, но не влияет на Variable1
Что я уже пробовал:
Я пытаюсь использовать свойства и настройки, и для тестирования на моем менеджере сервера я делаю int, который будет управляться функцией, и переменная Variable1 скажет этой функции использовать этот int для увеличения его значения.
Graeme_Grant
Я не понимаю... Почему бы просто не передать целое число?
Coby Powers (cpowers08)
На самом деле это просто пример чего-то большего, над чем я работаю, просто учусь управлять строкой кода или использовать строку из переменной в качестве строки кода. Если в этом есть хоть какой-то смысл.
Coby Powers (cpowers08)
В настоящее время я использую настройки внутри свойств, чтобы сделать переменные, которые застряли с исполняемым файлом. И я хочу увеличить целое число, но если я сделаю несколько целых чисел... Я хочу, чтобы функция увеличивала это целое число, давая переменную, которая дает имя переменной целого числа. И я не могу понять, как это сделать.
Graeme_Grant
Ответ находится в решении 1...
Coby Powers (cpowers08)
Спасибо, я вроде как думал об использовании решения номер один, прежде чем опубликовать это, но решил пойти по простому пути. Но это объясняет, что нет другого простого способа сделать это. Подумав о решении 1, я мог бы создать ссылку, которая использует сложный или своего рода сложный код, подобный решению 1, и не допустить, чтобы основной код в основном проекте выглядел грязным.
Graeme_Grant
Я использую другую версию третьего метода не с переменными или именами переменных, а с интерфейсами. Это позволяет мне передать объект (класс), реализующий интерфейс, и выполнить операцию. Например, передайте объект клиента или поставщика и выполните расчет налога с продаж и стоимости фрахта для конкретной страны назначения. Таким образом, функция имеет только одну операцию - как применить расчеты (налог с продаж, доставка и т. д.) к объекту (клиенту/поставщику), не понимая, что и как делает расчет...
Coby Powers (cpowers08)
Чтобы добавить это, при работе со свойствами и настройками вам нужно сохранить данные после записи в них. Вот почему используется UpdateVars, чтобы он не выглядел плохо, когда я могу скомпилировать его в функцию, которая при необходимости будет выполнять побочные вычисления.
Dave Kreskowiak
Я понимаю, что вы пытаетесь сделать, но если вы думаете, что вам нужно это сделать, вам действительно нужно переосмыслить свой дизайн.
То, что вы делаете, может показаться простым на первый взгляд, но это приводит к недостижимому коду и трудным для репликации и поиска ошибок.
Coby Powers (cpowers08)
Какие ошибки это может создать? Я знаю, что это может вызвать проблемы, если переменная не указана в операторе switch-case, который находится в функции, но такого рода вещи я буду использовать операторы try, и я единственный, кто имеет дело с этим кодом, так что он, скорее всего, будет контролироваться.
Dave Kreskowiak
Измените имена переменных, а не строки,или наоборот, или смесь. Имейте имена переменных в виде строк, определенных в нескольких местах, и пусть одно из них не будет таким же, как другие.
Если пользователю предоставляется возможность свободного текста с именами переменных, да, просто забудьте об этом.
Graeme_Grant
Согласованный.
Coby Powers (cpowers08)
Не могли бы вы объяснить, что вы объясняете? Я вижу проблему с ошибкой, но как насчет ремонтопригодности?
Dave Kreskowiak
Вы определяете имя переменной в нескольких местах, и все они должны совпадать. Само имя переменной, а затем имена в строке, которые вы используете. Это просто становится кошмаром для поддержания.
Coby Powers (cpowers08)
Я нашел идеальное решение для этого, так как я использую настройки, я могу использовать varType свойств.(SettingsNameHere) вместо строки, и он делает именно то, что я объяснял выше. Итак, решение найдено.
Coby Powers (cpowers08)
Как бы... у него возникли проблемы с преобразованием int в свойства.(Имя)
Graeme_Grant
Хранение имени переменной извне приведет к появлению ошибок в будущем...
В соответствии с моим решением ниже, nameof(...)
преодолевает проблему. Когда вы используете инструмент VS refactoring tool (щелкните правой кнопкой мыши на имени переменной в любом месте исходного кода и выберите "Переименовать"), чтобы переименовать переменную, все вхождения обновляются автоматически. :)
Coby Powers (cpowers08)
Что ж, я возвращаюсь, чтобы узнать, что вы сказали. И я вижу ваше решение, но в среднем решении оно в значительной степени разрушает сам факт передачи в него имени переменных без необходимости такого большого количества кода. Некоторое время назад я пришел к выводу, что это невозможно из-за текущей версии .NET Framework. Я получаю доступ к базам данных вместо настроек и текстовых файлов, и нет большой необходимости передавать имена переменных в функцию для использования в строке кода. Но спасибо за помощь.
Coby Powers (cpowers08)
Кроме того, эти решения на самом деле не соответствуют тому, о чем я спрашивал. Я спрашивал, можете ли вы в значительной степени использовать значение переменной в качестве ярлыка для кода, например:
public static string shortcut = " каталог";
public static void GetDir(string shortcut)
{
кратчайший путь.GetFiles("C:\");
}
Я знаю, что это практически невозможно, я думал, что это будет так, так как я делал это еще в LUA. Я не просто спрашивал имя переменной. Но используйте значение переменной как ярлык или строку кода.