2011-01-09 100 views
0

如何访问分配一些值的字符串在for循环中,外for循环 i可以为你提供的代码为你的方便访问可变外部for循环

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

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

显示的错误是

名“STR”不会在目前情况下

+1

你可能想添加一个标记'变量范围'或类似的东西。或谷歌的那个期限。 – xtofl 2011-01-09 13:45:00

回答

3

存在在声明内部变量10循环(或任何其他范围),它不在该范围之外。
您需要在循环之外声明该变量。

请注意,这不会做你想做的事,因为你不追加字符串。
而应该使用StringBuilder。
如果i > 0只能追加", ",可以使它变得更简单。

在.NET 4.0中,你可以用new overload of String.Join替换整个循环:

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

.NET 4.0之前,您可以用

string str1 = String.Join(", ", yourlist.Select(o => o.ToString()).ToArray()); 
+0

那么我会得到什么结果 – 2011-01-09 13:45:26

+0

存储嘿! thanx回复 – 2011-01-09 13:45:46

+0

我的列表在这里给出了4个整数值,它是否仍然可以替代最后一个逗号? – 2011-01-09 13:54:10

0
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); 

在这种情况下,您不需要声明一个变量

7

该变量的范围不会扩展到循环外部。如果您要访问它的价值,你需要将它与一个更大的范围内保存到另一个变量,就像这样:

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()); 
0

尝试下面的代码:

String str = ""; 

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

环路starts.because声明的变量str之前声明变量str内部的for循环超出范围,因此是在编译错误。

0
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); 

虽然“海峡”和“STR1”是变量非常糟糕的名字。他们没有任何意义。一个变量名应该对这个变量存储的内容有一个线索,而不是它的数据类型。

0

String.Join是你想要的。你不必使用循环。

String.Join(",", yourlist);