C#代码为何抛出System.NullReferenceException空引用异常?
System.NullReferenceException异常原因分析
你的代码意图是找到字符串"Podatki so v EUR s centi"后,在下一次循环输出对应数据并重置状态,但执行时触发了空引用异常,具体原因如下:
异常本质
System.NullReferenceException的核心是你尝试访问一个未实例化的对象(值为null的对象)的成员。虽然调试器显示异常发生在z = 3这一行,但实际异常触发点是前面的Console.WriteLine语句,属于调试器行号标记的偏差。
具体触发场景
可能的触发情况有两种:
- 集合
izkazi1中包含null元素:当循环到null元素且z == 1时,访问i.VREDNOSTI1或i.VREDNOSTI2会直接抛出异常——因为i本身是null,没有任何属性可以访问。 i对象有效,但VREDNOSTI1/VREDNOSTI2为null:虽然Console.WriteLine(null)本身不会抛出异常,但如果后续对这些属性有调用方法等操作,也可能触发异常;不过结合你的代码,这种情况概率更低,更可能是集合中存在null元素。
额外的代码逻辑问题
你的两个if语句是独立执行的:当z == 1的分支执行完毕后,仍会执行第二个if的判断。如果当前循环的i.VREDNOSTI2恰好等于目标字符串,会把z重新设为1,这可能不符合你"输出后重置状态"的预期,建议调整为else if或者改变判断顺序。
内容的提问来源于stack exchange,提问作者AKzar1el
相关产品推荐
相关产品推荐

