Member 13522501 Ответов: 3

Определите переменную внутри цикла for(I ..)


привет
как я должен делать эту работу?

string s1;
string s2;
string s3;


я хочу определить переменную внутри цикла:

for (i=1;i=3;i++)
{
   string s+i.tostring();
}


но s+i.tostring() неправильный.

спасибо

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

я не знаю что мне делать

помощь

3 Ответов

Рейтинг:
9

Dave Kreskowiak

Если вы пытаетесь определить некоторые строковые переменные с именами s1, s2 и s3, это не сработает. Вы не можете определить имена переменных таким образом во время выполнения.

Вы можете определить коллекцию, которая будет содержать строки, например:

List<string> myStrings = new List<string>();
myStrings.Add("some string content");

или массив строк:
string[] myStrings = new string[3];
myStrings[0] = "some string content";

Существует множество способов хранения коллекции предметов. Обычно вы не определяете одну переменную для каждого элемента.


Bryian Tan

Я согласен с тобой, я думаю, ты читаешь его мысли. Опасно :)+5

Рейтинг:
2

OriginalGriff

TheRealSteveJudge прав, но ... весь цикл бессмыслен, как показано на рисунке, так как переменная выйдет из области видимости в конце цикла и будет выброшена.

Лучшим решением было бы следующее:

string s = "";
for (int i = 1; i <= 3; i++)
   {
   s = s + i.ToString();
   }
Console.WriteLine(s);
Или для больших петель:
StringBuilder sb = "";
for (int i = 1; i <= 3; i++)
   {
   sb.Append(i.ToString());
   }
Console.WriteLine(sb.ToString());
Поскольку строки неизменяемы - когда вы объединяете строки, вы создаете новую строку и должны скопировать всю информацию через нее - это может быть невероятно неэффективно с точки зрения мощности процессора и памяти, если вы не будете осторожны. Класс StringBuilder сводит это к минимуму, будучи расширяемой строкой.


TheRealSteveJudge

Вы правы со мной

the variable will go out of scope

Но почти невозможно дать идеальный ответ на такой плохой вопрос.
Однако подсказка StringBuilder очень ценна. 5*

Рейтинг:
1

TheRealSteveJudge

Все происходит примерно так:

for (var i = 1; i <= 3; i++)
{
    var myString = "s" + i;
}