求助:我的foreach语句下方持续出现红色下划线问题
问题排查:foreach语句出现红色下划线的原因
嘿,我一眼就揪出问题啦——你的foreach循环存在类型不匹配的错误,这就是编译器给你标红的核心原因。
咱们拆解下代码里的矛盾点:
你定义变量test的代码是:
string test = question.Split('?')[qCounter];
这里question.Split('?')会返回一个string[]字符串数组,通过[qCounter]索引取出的test是单个字符串,而非数组类型。
但你后续的foreach循环写的是:
foreach (string part in test)
在C#里,遍历string类型变量时,实际迭代的是它的每一个字符(也就是char类型),但你把迭代变量part声明成了string,类型完全不兼容,编译器直接就抛出错误,表现就是你看到的红色下划线。
给你两种针对性的解决方案:
- 如果你的需求是遍历这个字符串的每一个字符,只需要把迭代变量的类型改成
char即可:
foreach (char part in test) { Console.WriteLine(part); Console.ReadLine(); }
- 如果你原本是想遍历
question.Split('?')得到的整个字符串数组,那应该直接遍历数组本身,而不是取单个元素再遍历:
// 先拿到分割后的完整数组 string[] questionParts = question.Split('?'); foreach (string part in questionParts) { Console.WriteLine(part); Console.ReadLine(); }
另外额外提一句:要注意qCounter的取值范围,避免出现数组索引越界的异常——比如当qCounter大于等于question.Split('?')的长度时,程序运行时会报错,这部分可以提前做个判断哦。
内容的提问来源于stack exchange,提问作者Femi
相关产品推荐
相关产品推荐

