2009-09-25 9 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

問題は実際にはループではないということです。あなたが同等

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

11

最初の繰り返しが終了する前にループを終了しています。

+0

ありがとう、私はそれを書き直す方法を教えてください? – Jamie

+0

ちょうどそれが示されました。 – Juri

+0

'break;と書かれている行を削除するだけです – wefwfwefwe

3

ようなもので訂正する必要が代わりにして、ループ内のため、あなたは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

また、あなたは例えば、Entity Frameworkのために言って使用する場合、到達不能コードを取得して終わることができ、あなたがそのプロジェクトへの参照を追加しませんでした。

データ・レイヤー・プロジェクト、ドメイン・クラスのようないくつかのプロジェクトがあるとしたら、テスト用のコンソール・アプリケーションを作成し、dbcontextのある場所を参照しますが、nugetとaddを使用しないEFでは、ループなどを書くときにコードに到達できません。

関連する問題