2009-09-25 143 views
10

我得到一個「無法訪問的代碼檢測」在Visual Studio中的消息在我下面++的代碼點。你能發現我做錯了什麼嗎?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

的問題是,這其實不是一個循環。您沒有上破任何條件,所以你能等效地編寫類似

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

非常感謝樹裏。 – Jamie 2009-09-25 10:02:07

11

在第一次迭代結束之前,你正在擺脫循環。

+0

謝謝,你能告訴我,我怎麼shoudl改寫呢? – Jamie 2009-09-25 09:59:17

+0

只是顯示它。 – Juri 2009-09-25 10:01:02

+0

只是刪除這一行:'突破;' – wefwfwefwe 2009-09-25 10:01:46

3

的問題是,因爲你在循環break;與它沒有任何其他的機會,我永遠不會達到我的增量(i++)。

0

雖然你的問題就解決了我要告訴你這一點,你可以使用你的目的的CreateSubKey()方法 。我認爲這是一個更好的選擇。 :)

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

您也可以最終獲得可達代碼,如果你使用比方說實體框架,你沒有添加參照該項目。

假設你有幾個像A數據層項目這樣的項目,一個領域類,然後你創建一個控制檯應用程序進行測試或者其他任何事情,並且你引用了你的dbcontext的位置,但是如果你不使用say nuget並且添加EF,你會得到的代碼試圖寫一個循環等無法接通時...