为什么字符串列表上的C#循环很奇怪? 我不认为自己是世界上最伟大的开发者,但我想我至少可以循环一个字符串列表!
以下是我的功能:为什么字符串列表上的C#循环很奇怪? 我不认为自己是世界上最伟大的开发者,但我想我至少可以循环一个字符串列表!,c#,list,loops,C#,List,Loops,以下是我的功能: public string liststrings() { List<string> strings = new List<string>(); strings.Add("First"); strings.Add("Second"); strings.Add("Third"); string output = string.Empty; for
public string liststrings() {
List<string> strings = new List<string>();
strings.Add("First");
strings.Add("Second");
strings.Add("Third");
string output = string.Empty;
for (int i = 0; i < strings.Count(); i++ )
{
output += output + strings[i] + "<br />";
}
return output;
}
公共字符串列表字符串(){
列表字符串=新列表();
字符串。添加(“第一”);
字符串。添加(“第二”);
字符串。添加(“第三”);
字符串输出=string.Empty;
对于(int i=0;i ”;
}
返回输出;
}
此函数返回以下html:
First<br />
First<br />
Second<br />
First<br />
First<br />
Second<br />
Third<br />
首先
首先
第二个
首先
首先
第二个
第三个
额外的迭代从何而来
仅供参考:我来自一个主要的VB脚本背景,我可以用VB脚本中的数组毫无问题地完成这项工作。列表和C#语法有什么不同,它们会弄脏这一点
谢谢您的帮助。您添加了两次输出
output += output + strings[i] + "<br />";
output+=output+strings[i]+“
”;
相当于:
output = output + output + strings[i] + "<br />";
output=output+output+strings[i]+“
”;
您可以使用:
output += strings[i] + "<br />";
output+=strings[i]+“
”;
更好的选择可能是
StringBuilder
额外的迭代来自于将先前的输出值附加到自身两次的事实
output += output + strings[i] + "<br />";
output+=output+strings[i]+“
”;
我想你想要
output = output + strings[i] + "<br />";
output=output+strings[i]+“
”;
或
output+=strings[i]+“
”;
但老实说,从您正在做的事情来看,我会看看这个类。如果您在每次迭代中将整个字符串添加回自身,请尝试以下操作:
output += strings[i] + "<br />";
output+=strings[i]+“
”;
您应该删除字符串.Count之后的()。此外,您还可以使用
foreach(string str in strings)
{
// etc.
}
此外,如其他帖子所述,您将添加两次输出:
output += output + "something"
相当于
output = output + output + "something"
建议使用StringBuilder
对象,而不是串联字符串
...
StringBuilder sb = new StringBuilder();
for( int i = 0; i < strings.Length; i++)
{
sb.WriteLine("{0}<br />", strings[i]);
}
return sb.ToString();
。。。
StringBuilder sb=新的StringBuilder();
for(int i=0;i ”,字符串[i]);
}
使某人返回字符串();
注意对纯数组使用.Length
属性,因为它速度更快。每隔一段时间,有一个问题我都不会回答,即使答案对我来说很明显-在我完成回答时,它会有十个答案:)哦,天哪。。。我很笨。。。漫长的一天结束了…漫长的一周。准备回家了!谢谢大家的帮助。我要说的是,这个循环并不奇怪,它完全是按照你的要求做的。:)是 啊我只是不习惯C#s+=赋值运算符。有趣的是,我甚至不想建立一个字符串。我只是想确保我的表单被正确绑定到modl。。。哈哈,我想这个答案是第一个。。。所以勾选。谢谢你的帮助。。。有点尴尬……在我看来,哪一个答案第一并不重要,关键是谁最好。然而,在本例中,这并不重要,因为第一个也是非常好的:)@quakkels您还可以使用string output=string.Concat(strings.Select(s=>s+“
”)代码>。大多数情况下,最好使用String.Join
或String.Concat
,这样就不必为变量编写循环或在String
和StringBuilder
之间进行选择。
...
StringBuilder sb = new StringBuilder();
for( int i = 0; i < strings.Length; i++)
{
sb.WriteLine("{0}<br />", strings[i]);
}
return sb.ToString();