Member 13689794 Ответов: 5

Есть ли вообще возможность назвать переменную, используя 2 переменные?


Я хочу иметь новую переменную, названную в честь 2 других переменных, и я не знаю, как это сделать в C#. Приведенный ниже код создаст 5 переменных с именами number1, number2, number3, number4 и number5, если это сработает. Подчеркнутый int-это то место, где моя visual studio говорит, что я получаю ошибку "недопустимый термин выражения 'int'".

Что я уже пробовал:

int a = 1;
string number = "number";

for(int counter = 1; counter <=5; counter++)
{
    Console.Write("Please input a number: ");
    int (string.Concat(number,a)) = int.Parse(Console.ReadLine());
    a++;
}

5 Ответов

Рейтинг:
37

Thomas Daniels

Нет, вы не можете динамически создавать переменные с динамическим именем.

Похоже, вы хотите взять 5 целых чисел из входных данных и сохранить их. Рассматривали ли вы возможность использования массив[^] (или a Список<int>[^])?


Member 13689794

Я хотел создать возможность для бесконечных переменных. Приведенный мною пример допускает только 5. Но, скажем, например, что делать, если вы хотите, чтобы пользователь сказал вам, сколько чисел он хочет ввести?

Thomas Daniels

Вы не можете динамически создавать бесконечные переменные, но опять же, на самом деле нет необходимости в бесконечных переменных, поскольку вы можете просто хранить много элементов в массиве или списке (я не буду говорить "бесконечный", потому что практически существуют ограничения памяти).

Если вы используете массив, вы должны знать количество элементов на момент создания. Тогда вы действительно можете спросить пользователя, сколько элементов он хочет ввести.

Если вы не можете заранее знать количество элементов, то перейдите к списку (это вторая ссылка, которую я предоставил).

Maciej Los

5ed!

Рейтинг:
2

F-ES Sitecore

Используйте массив или что-то подобное, если вы знаете, сколько вы хотите, или список, если вы этого не делаете. Google "c# arrays" для примеров\учебников о том, как использовать массивы.


Рейтинг:
1

Maciej Los

Альтернативно к решению №1 путем Томас Д [ProgramFOX][^] вы можете использовать Словарь[^], что позволяет хранить имя "переменной" и ее значение. Видеть:

Dictionary<string, int> d = new Dictionary<string, int>();
for(int counter = 1; counter <=5; counter++)
{
    Console.WriteLine("Please input {0}. number: ", counter);
    int a = int.Parse(Console.ReadLine());
    d.Add("number" + counter, a);
}

Console.WriteLine();
foreach(var k in d.Keys)
{
	Console.WriteLine("Variable name: '{0}' | Value: {1}", k, d[k]);
}


Результат:
Please input 1. number: 
Please input 2. number: 
Please input 3. number: 
Please input 4. number: 
Please input 5. number: 

Variable name: 'number1' | Value: 543
Variable name: 'number2' | Value: 34534
Variable name: 'number3' | Value: 67654
Variable name: 'number4' | Value: 22
Variable name: 'number5' | Value: 1


Рейтинг:
1

David O'Neil

Быстрый поиск в google по теме "C# добавление числа в строку" показывает, что все, что вам нужно сделать, это использовать оператор"+". string str = Console.ReadLine() + a; Это должно быть что-то вроде этого, так как я еще не разбираюсь в C#.


Thomas Daniels

Однако речь идет не о конкатенации string/int, а о создании переменных с динамическими именами :)

Richard Deeming

ОП хочет создавать переменные с динамическими именами, а не объединять значения для создания строки.

Рейтинг:
0

Patrice T

Цитата:
Есть ли вообще возможность назвать переменную, используя 2 переменные?

Только не с C#.
То, что вы хотите сделать, - это причина, по которой существуют массивы.