C# Unreachable code detected
在下面的代码中,我在Visual Studio的i++处收到一条"检测到无法访问的代码"消息。你能看出我做错了什么吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 | try { RegistryKey OurKey = Registry.CurrentUser; OurKey.CreateSubKey("Software\ esources\\Shared"); OurKey = OurKey.OpenSubKey("Software\ esources\\Shared", true); for (int i = 0; i < cmbPaths.Items.Count; i++) //<---- problem with i { OurKey.SetValue("paths" + i, cmbPaths.Items[i]); break; } } |
问题是这实际上不是一个循环。你没有任何休息的条件,所以你可以写一些类似的东西
1 2 3 4 | if(cmbPath.Items.Count > 0) { OurKey.SetValue("paths" + 0, cmbPaths.Items[0]); } |
或者你必须用类似的东西来纠正
1 2 3 4 5 6 7 | for (int i = 0; i < cmbPaths.Items.Count; i++) { OurKey.SetValue("paths" + i, cmbPaths.Items[i]); if(someConditionHolds) break; } |
您将在第一次迭代结束之前脱离循环。
问题是,因为你在循环中没有机会做任何其他事情,所以i(EDOCX1)(1)的增量永远不会达到。
如果使用say(例如实体框架),并且没有将该引用添加到该项目中,那么最终也会得到无法访问的代码。
假设您有几个项目,比如数据层项目、域类,然后您创建了一个控制台应用程序用于测试或其他任何内容,并引用了dbContext所在的位置,但如果不使用say nuget和外接程序ef,则在尝试编写循环时将无法访问代码等…
尽管你的问题解决了,我还是要告诉你,您只需使用createSubkey()方法就可以了。我觉得这是个更好的选择。:)
1 2 3 | //Creates a new subkey or opens an existing subkey for write access. var ourKey = Registry.CurrentUser.CreateSubKey("Software\ esources\\Shared"); |