2009-09-25 3 views
10

Visual Studio에서 아래 코드에서 i ++ 지점의 "연결할 수없는 코드가 감지되었습니다"라는 메시지가 나타납니다. 내가 잘못한 것을 발견 할 수 있니?C# 연결할 수없는 코드가 발견되었습니다.

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; 
    } 
} 

답변

24

문제는 실제로 이것이 루프가 아니라는 것입니다. 당신이 동등하게 당신이

for (int i = 0; i < cmbPaths.Items.Count; i++) 
{ 
    OurKey.SetValue("paths" + i, cmbPaths.Items[i]); 

    if(someConditionHolds) 
     break; 
} 
+0

많은 감사 Juri. – Jamie

11

첫 번째 반복이 끝나기 전에 루프가 종료됩니다.

+0

감사합니다. shoudl이 어떻게 다시 작성하는지 보여줄 수 있습니까? – Jamie

+0

방금 ​​보여주었습니다. – Juri

+0

그냥'break;라고 쓰여있는 줄을 지우시오. – wefwfwefwe

3

문제처럼 뭔가를 해결하는 데 다른 방법

if(cmbPath.Items.Count > 0) 
{ 
    OurKey.SetValue("paths" + 0, cmbPaths.Items[0]); 
} 

같은 것을 쓸 수 있도록 인 휴식 시간에 어떤 조건을하지 않아도 때문에 루프에서 당신 break;와 다른 일을 할 기회가 없으므로 i (i++)의 증분에는 절대 도달하지 않습니다.

0

문제가 해결되었지만 목적을 위해 그냥 CreateSubKey() 메서드를 사용할 수 있습니다. 나는 그것이 더 나은 선택이라고 생각한다. :

//Creates a new subkey or opens an existing subkey for write access. 
var ourKey = Registry.CurrentUser.CreateSubKey("Software\\Resources\\Shared"); 
0

당신은 또한 예를 엔티티 프레임 워크에 대한 말을 사용하는 경우 도달 할 수없는 코드를 그만 둘 수 있으며, 해당 프로젝트에 해당 참조를 추가하지 않았다.

데이터 클래스 프로젝트와 같은 프로젝트가 여러 개 있다고 가정 해 보겠습니다. 테스트 용 등의 용도로 사용하고 dbcontext가있는 곳을 참조하는 콘솔 앱을 만들지 만 say nuget을 사용하지 않고 추가하면 EF를 사용하면 루프를 작성하려고 할 때 코드에 도달 할 수 없게됩니다.

관련 문제