С# обнаружен недостижимый код
Я получаю сообщение "Unreachable code detected" в 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;
}
}
Ответы
Ответ 1
Проблема в том, что это фактически не цикл. У вас нет никаких условий для перерыва, поэтому вы можете написать примерно что-то вроде
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;
}
Ответ 2
Вы выходите из цикла до конца первой итерации.
Ответ 3
Проблема заключается в том, что, поскольку вы break;
в цикле без каких-либо шансов сделать что-либо еще, приращение я (i++
) никогда не будет достигнуто.
Ответ 4
Хотя ваша проблема решена, я должен сказать вам это,
вы можете просто использовать метод CreateSubKey() для своей цели. Я думаю, что это лучший выбор.
:)
//Creates a new subkey or opens an existing subkey for write access.
var ourKey = Registry.CurrentUser.CreateSubKey("Software\\Resources\\Shared");
Ответ 5
Вы также можете получить недостижимый код, если используете, например, Entity Framework, и вы не добавили эту ссылку в этот проект.
Предположим, что у вас есть несколько проектов, таких как Project Data Layer Project, классы домена, затем вы создаете консольное приложение для тестирования или что-то еще, и вы указываете, где находится ваш dbcontext, но если вы не используете say nuget и добавьте EF, вы получите код недостижимым при попытке написать цикл и т.д.