我在下面的代码中的i ++点上在Visual Studio中收到“无法检测到的代码”消息。你能发现我做错了吗?
try
{
RegistryKey OurKey = Registry.CurrentUser;
OurKey.CreateSubKey("Software\\Resources\\Shared");
OurKey = OurKey.OpenSubKey("Software\\Resources\\Shared", true);
for (int i = 0; i < cmbPaths.Items.Count; i++) //<---- problem with i
{
OurKey.SetValue("paths" + i, cmbPaths.Items[i]);
break;
}
}
答案 0 :(得分:24)
问题是这实际上不是一个循环。你在休息时没有任何条件,所以你可以等同地写一些像
这样的东西if(cmbPath.Items.Count > 0)
{
OurKey.SetValue("paths" + 0, cmbPaths.Items[0]);
}
或者你必须纠正
之类的东西for (int i = 0; i < cmbPaths.Items.Count; i++)
{
OurKey.SetValue("paths" + i, cmbPaths.Items[i]);
if(someConditionHolds)
break;
}
答案 1 :(得分:11)
在第一次迭代结束之前你已经脱离了循环。
答案 2 :(得分:3)
问题是因为你在循环中break;
而没有机会做其他事情,所以永远不会达到i(i++
)的增量。
答案 3 :(得分:0)
虽然问题解决了但我需要告诉你这个, 你可以只使用CreateSubKey()方法。我认为这是一个更好的选择。 :)
//Creates a new subkey or opens an existing subkey for write access.
var ourKey = Registry.CurrentUser.CreateSubKey("Software\\Resources\\Shared");
答案 4 :(得分:0)
如果您使用例如Entity Framework,您也可能最终获得无法访问的代码,并且您没有将该引用添加到该项目。
假设您有几个项目,如数据层项目,域类,然后您创建一个控制台应用程序进行测试或任何你引用dbcontext所在的位置,但如果你不使用say nuget并添加EF ,在尝试编写循环等时,您将无法访问代码...