С недостижимого кода# обнаружении
Я получаю сообщение "обнаружен недостижимый код" в Visual Studio в точке I++ в моем коде ниже. Ты можешь определить, что я сделал не так?
try
{
RegistryKey OurKey = Registry.CurrentUser;
OurKey.CreateSubKey("SoftwareResourcesShared");
OurKey = OurKey.OpenSubKey("SoftwareResourcesShared", true);
for (int i = 0; i < cmbPaths.Items.Count; i++) //<---- problem with i
{
OurKey.SetValue("paths" + i, cmbPaths.Items[i]);
break;
}
}
5 ответов
проблема в том, что это на самом деле не цикл. У вас нет никаких условий в перерыве, чтобы вы могли эквивалентно написать что-то вроде
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;
}
проблема в том, что вы break;
в цикле без каких-либо шансов сделать что-либо еще, приращение i (i++
) никогда не будет достигнут.
хотя ваша проблема решена, я должен сказать вам это, вы можете просто использовать метод CreateSubKey () для своей цели. Думаю, это лучший выбор. :)
//Creates a new subkey or opens an existing subkey for write access.
var ourKey = Registry.CurrentUser.CreateSubKey("Software\Resources\Shared");
вы также можете получить недостижимый код, если вы используете say, например Entity Framework, и вы не добавили эту ссылку на этот проект.
скажем, у вас есть несколько проектов, таких как проект слоя данных, классы домена, затем вы создаете консольное приложение для тестирования или что-то еще, и вы ссылаетесь, где находится ваш dbcontext, но если вы не используете say nuget и добавить в EF, вы получите код недостижимым при попытке написать цикл и т. д...