如何在for循环外部访问for循环中指定了某个值的字符串 我可能会为您提供方便的代码
for (Int32 i = 0; i < yourlist.Count; i++)
{
String str=(yourlist[i].ToString() + ",");
}
String str1 = (str).Substring(0, str.Length - 1);
显示的错误是
当前上下文中不存在名称'str'
答案 0 :(得分: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());
答案 1 :(得分:3)
在for
循环(或任何其他范围)内声明变量时,它不存在于该范围之外。
你需要在循环之外声明变量。
请注意,这不会执行您想要的操作,因为您没有附加字符串
相反,您应该使用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());
答案 2 :(得分: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);
在这种情况下,您不需要再声明一个变量
答案 3 :(得分:0)
尝试以下代码:
String str = "";
for (Int32 i = 0; i < yourlist.Count; i++)
{
str =(yourlist[i].ToString() + ",");
}
String str1 = (str).Substring(0, str.Length - 1);
答案 4 :(得分:0)
在循环开始之前声明变量str。因为在for循环中声明的变量str超出了范围,因此编译时出错。
答案 5 :(得分: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);
虽然“str”和“str1”确实是变量的坏名称。他们没有任何意义。变量名应该具有该变量存储的线索,而不是其数据类型。
答案 6 :(得分:0)
String.Join就是你想要的。您不必使用循环。
String.Join(",", yourlist);