所以我目前有一个程序,可以将项目添加到列表中,例如 用户名,索引,然后在下面的此代码中向索引添加一个。只会在最近添加的项目中添加一个。
Console.WriteLine("There are currently: " + AntiSpam.Count);
int Index = 0;
foreach (string s in AntiSpam)
{
Console.WriteLine("Found User: " + s.Split(',')[0]);
AntiSpam[Index] = s.Split(',')[0] + "," + (int.Parse(s.Split(',')[1]) + 1).ToString();
Index++;
}
基本上这将返回数据当前有:10 找到的用户:某人。然后,它将再次转到此代码的另一个循环,并再次显示相同的结果。
编辑 通过使用此代码,我设法使代码正常工作
for (var i = 0; i < AntiSpam.Count; i++)
{
AntiSpam[i] = AntiSpam[i].Split(',')[0] + "," + (int.Parse(AntiSpam[i].Split(',')[1]) + 1).ToString();
Console.WriteLine("Text is {0}", AntiSpam[i]);
}
但是,如果可能的话,我想知道为什么它起作用而第一个不起作用
答案 0 :(得分:0)
如果您要为列表建立索引,只需执行for
而不是foreach
。这样可以避免使用(和可能造成混淆)使用单独的变量来跟踪AntiSpam.IndexOf(s)
的问题,而这基本上就是您试图对Index
进行的操作:
Console.WriteLine("There are currently: " + AntiSpam.Count);
int index;
string s;
for(int i=0; i < AntiSpam.Count, i++)
{
string[] parts = AntiSpam[i].Split(',');
username = parts[0];
Console.WriteLine("Found User: " + username);
if (parts.Length > 1)
{
index = int.Parse(parts[1])
AntiSpam[i] = username + "," + (index + 1).ToString();
}
}