C#不到的代码检测(C# Unreachable code detected)

2019-08-16 20:09发布

我在我在下面++的代码点获得在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;
    }
}

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


Answer 2:

第一次迭代结束前你打破了循环。



Answer 3:

问题是,因为你break; 在没有它做别的机会的循环,我(的增量i++ )将永远不会被达到。



Answer 4:

虽然你的问题就解决了我要告诉你这一点,你可以使用CreateSubKey()方法,你的目的。 我认为这是一个更好的选择。 :)

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


Answer 5:

您也可以最终获得可达代码,如果你使用比方说实体框架,你没有添加参照该项目。

假设你有几个项目,如数据层项目,一个域类,然后创建用于测试或任何一个控制台应用程序,您引用在您的DbContext是的,但如果你不使用说的NuGet并加入EF,你将试图写一个循环等时获取代码可达...



文章来源: C# Unreachable code detected