C#中IndexOf方法计数异常:始终返回0的问题求助
问题分析与修复方案
嘿,我一眼就瞅出问题所在啦!你的IndexOf方法里,counter变量的声明位置和递增时机完全错了,这就是为啥调用它永远返回0的原因。
问题拆解
- 你把
int counter = 0;放在了for循环的内部,这意味着每遍历一个新节点,counter都会被重置为0,根本没法累计索引值。 - 而且你是在判断
text == i.Text之后才执行counter++,就算当前节点不匹配,counter刚加1就进入下一次循环被重置,永远没法正确计数。
修复后的代码
public int IndexOf(string text) { // 把counter移到循环外部,只初始化一次 int counter = 0; for (Node i = Head; i != null; i = i.Next) { if (text == i.Text) { return counter; } // 每次检查完当前节点,不管匹配与否,都递增计数 counter++; } return -1; }
额外小提示
如果你的场景需要更灵活的字符串比较(比如忽略大小写),建议用string.Equals(text, i.Text, StringComparison.OrdinalIgnoreCase)代替直接的==,这样能让方法的适用性更强。
内容的提问来源于stack exchange,提问作者user8716535
相关产品推荐
相关产品推荐

