доступ к переменной снаружи для цикла - PullRequest
0 голосов
/ 09 января 2011

как получить доступ к строке, которой присвоено некоторое значение в цикле for, вне цикла for я могу предоставить вам код для вашего удобства

for (Int32 i = 0; i < yourlist.Count; i++)
    {
        String str=(yourlist[i].ToString() + ",");
    }

    String str1 = (str).Substring(0, str.Length - 1);

ошибка отображается

Имя 'str' не существует в текущем контексте

Ответы [ 7 ]

7 голосов
/ 09 января 2011

Область действия переменной не распространяется за пределы цикла. Если вы хотите получить доступ к его значению, вам нужно сохранить его в другой переменной с большей областью действия, например:

string str;
for (Int32 i = 0; i < yourlist.Count; i++)
{
    str=(yourlist[i].ToString() + ",");
}

String str1 = (str).Substring(0, str.Length - 1);

Однако то, что вы пытаетесь сделать, можно просто сделать так:

var str1 = string.Join(",", yourlist.Select(o => o.ToString()).ToArray());
3 голосов
/ 09 января 2011

Когда вы объявляете переменную внутри цикла for (или любой другой области видимости), она не существует вне этой области.
Вам необходимо объявить переменную вне цикла.

Обратите внимание, что это не будет делать то, что вы хотите, так как вы не добавляете строку.
Вместо этого вы должны использовать StringBuilder.
Вы можете сделать это несколько проще, добавив ", ", если i > 0.

В .Net 4.0 вы можете заменить весь цикл новой перегрузкой , равной String.Join:

string str1 = String.Join(", ", yourlist);

До .Net 4.0 вы можете заменить его на

string str1 = String.Join(", ", yourlist.Select(o => o.ToString()).ToArray());
0 голосов
/ 09 января 2011

String.Join это то, что вы хотите.Вам не нужно использовать цикл.

String.Join(",", yourlist);
0 голосов
/ 09 января 2011
String str;
for (int i = 0; i < yourlist.Count; i++)
{
    str = (yourlist[i].ToString() + ",");
}
str1 = str.Substring(0, str.Length - 1);

Но лучший способ написать этот код:

str1 = string.Join(",", yourlist);

Хотя "str" ​​и "str1" - действительно плохие имена для переменных. Они ничего не значат. Имя переменной должно иметь представление о том, что хранит эта переменная, а не о ее типе данных.

0 голосов
/ 09 января 2011

Объявите переменную str перед началом цикла. Потому что переменная str, объявленная внутри цикла for, выходит из области видимости и, следовательно, является ошибкой компиляции.

0 голосов
/ 09 января 2011

Попробуйте код ниже:

 String str = "";

 for (Int32 i = 0; i < yourlist.Count; i++)   
   {   
      str =(yourlist[i].ToString() + ","); 
   }   
 String str1 = (str).Substring(0, str.Length - 1); 
0 голосов
/ 09 января 2011
String str = string.Empty;

for (Int32 i = 0; i < yourlist.Count; i++)
{
    str=(yourlist[i].ToString() + ",");
}

String str1 = (str).Substring(0, str.Length - 1);

Также вы можете сохранить результат обратно в переменную str

 str = (str).Substring(0, str.Length - 1);

В этом случае вам не нужно объявлять еще одну переменную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...