C# 도달 할 수없는 코드가 감지되었습니다
-
16-09-2019 - |
문제
아래 코드의 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;
}
}
해결책
문제는 이것이 실제로 루프가 아니라는 것입니다. 휴식 시간에 어떤 조건이 없어서 같은 것을 쓸 수 있습니다.
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");
예를 들어 Entity Framework와 같은 말을 사용하면 도달 할 수없는 코드를 얻을 수 있으며 해당 프로젝트에 대한 참조를 추가하지 않았습니다.
데이터 계층 프로젝트, 도메인 클래스와 같은 여러 프로젝트가 있다고 가정 해 보면 테스트를위한 콘솔 앱을 만들고 DBContext가있는 위치를 참조하지만 사용하지 않으면 NUGET를 사용하지 않으면 EF를 추가합니다. 루프 등을 쓰려고 할 때 코드를받을 수없는 코드를 얻으십시오 ...
제휴하지 않습니다 StackOverflow