2009-09-25 48 views
10

Tôi nhận được thông báo "Đã phát hiện mã không truy cập được" trong Visual Studio tại điểm i + + trong mã của tôi bên dưới. Bạn có thể phát hiện ra những gì tôi đã làm sai?C# Mã không thể truy cập được phát hiện

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

Trả lời

24

Vấn đề là đây thực sự không phải là vòng lặp. Bạn không có bất kỳ điều kiện vào giờ nghỉ, do đó bạn tương đương có thể viết một cái gì đó giống như

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

Hoặc bạn có để điều chỉnh với một cái gì đó giống như

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

    if(someConditionHolds) 
     break; 
} 
+0

Rất cám ơn Juri. – Jamie

11

Bạn đang thoát khỏi vòng lặp trước khi kết thúc lần lặp đầu tiên.

+0

Cảm ơn, bạn có thể chỉ cho tôi cách tôi viết lại nó không? – Jamie

+0

chỉ hiển thị nó. – Juri

+0

chỉ cần xóa dòng có nội dung 'break;' – wefwfwefwe

3

Vấn đề là vì bạn break; trong vòng lặp với không có khả năng nó làm bất cứ điều gì khác, sự gia tăng của tôi (i++) sẽ không bao giờ đạt được.

0

Mặc dù vấn đề của bạn được giải quyết nhưng tôi cần nói với bạn điều này, bạn chỉ có thể sử dụng phương thức CreateSubKey() cho mục đích của bạn. Tôi nghĩ đó là một lựa chọn tốt hơn. :)

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

Bạn cũng có thể kết thúc nhận được mã unreachable nếu bạn sử dụng nói ví dụ Entity Framework, và bạn không thêm rằng tài liệu tham khảo cho dự án đó.

Giả sử bạn có một số dự án như Dự án lớp dữ liệu, Lớp miền, sau đó bạn tạo ứng dụng bảng điều khiển để kiểm tra hoặc bất cứ điều gì và bạn tham khảo vị trí của dbcontext, nhưng nếu bạn không sử dụng nuget nói và thêm vào EF, bạn sẽ nhận được mã không thể truy cập được khi cố viết một vòng lặp ...

Các vấn đề liên quan