C# 方法必须具有返回类型(C)

C# 方法必须具有返回类型(C),c#,button,back,forward,C#,Button,Back,Forward,得到的方法必须有一个返回类型,我真的不明白为什么 返回错误的是公共帮助视图部分。代码的顶部,将其制作成块引号 Web浏览器应用程序,代码用于后退和前进按钮 public class HelpView { } List<Uri> HistoryStack; int HistoryStack_Index; bool fromHistory; //Constructor public HelpView() { InitializeComponent()

得到的方法必须有一个返回类型,我真的不明白为什么

返回错误的是公共帮助视图部分。代码的顶部,将其制作成块引号

Web浏览器应用程序,代码用于后退和前进按钮

public class HelpView
    {

    }
    List<Uri> HistoryStack;
int HistoryStack_Index;
bool fromHistory;

 //Constructor
public HelpView()
{
    InitializeComponent();
    HistoryStack = new List<Uri>();
    HistoryStack_Index = 0;
    fromHistory = false;
    webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
    updateNavButtons();
}

helpview可能不是类的确切名称。如果要将其作为构造函数,请确保方法名与类名匹配。如果这是一种方法,请将其更改为

public void helpView()

发生编译错误的原因是编译器认为您正在尝试创建一个方法,而方法需要具有返回类型或void。唯一不需要返回类型的时候是当您有一个构造函数时,但是构造函数的规则是它们必须与类具有完全相同的名称。由于您没有相同的名称,这就是为什么编译器像方法一样验证它

解决方案是确保构造函数名和类名完全相同

public class HelpView // <- CLASS NAME
{
    // Properties.
    List<Uri> HistoryStack;
    int HistoryStack_Index;
    bool fromHistory;

    // Constructor.
    public HelpView() // <- CONSTRUCTOR NAME
    {
        InitializeComponent();
        HistoryStack = new List<Uri>();
        HistoryStack_Index = 0;
        fromHistory = false;
        webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
        updateNavButtons();
    }
}
作为对OP关于类定义的评论以及我发布答案的原因的回应,这就是有效类和构造函数的外观

请注意,类名和构造函数名必须完全相同

public class HelpView // <- CLASS NAME
{
    // Properties.
    List<Uri> HistoryStack;
    int HistoryStack_Index;
    bool fromHistory;

    // Constructor.
    public HelpView() // <- CONSTRUCTOR NAME
    {
        InitializeComponent();
        HistoryStack = new List<Uri>();
        HistoryStack_Index = 0;
        fromHistory = false;
        webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
        updateNavButtons();
    }
}

如果我们参考你文章中当前使用的代码,那么花括号的位置似乎是关闭的。您可以为HelpView类打开它们,然后它会立即关闭

它应该是:

public class HelpView
{
    List<Uri> HistoryStack;
    int HistoryStack_Index;
    bool fromHistory;

    //Constructor
    public HelpView()
    {
        InitializeComponent();
        HistoryStack = new List<Uri>();
        HistoryStack_Index = 0;
        fromHistory = false;
        webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated);
        updateNavButtons();
    }
}

您的类名为helpView吗?C和helpView中的大小写事项与helpView不同。如果您的类名为HelpView,则HelpView不会被识别为构造函数,而是必须具有返回类型的普通方法。原始代码使用的是HelpView,而不是HelpView。只是一些我测试后忘记的东西。在问题标题中不包含标记的情况下,大写和非大写HDon的结果相同。不要发布太多相关的代码,因为不需要包含这些前向和后向方法。请在类xxxxxx中包含您的类定义位。请在问题的代码示例中添加定义类名的代码,然后打开和关闭HelpView类的括号。HelpView方法在HelpView类之外。您的代码中是否有完全相同的代码?抱歉,代码是public void HelpView我尝试更改大写字母,但在发布之前忘记更改回大写字母。刚刚将代码更改为您建议的代码,因此当前代码被编辑为原始问题。相同的错误..@user3303633:这是不同的,您的代码必须进入类{}的内部。我还建议,一旦你解决了这个问题,你就可以找到一些关于C的基本教程,并学习其中的一些帮助你入门,你现在缺少一些非常基本的知识。我已经学习了一些基本教程,我觉得我应该知道这一点,不管怎样,感谢您的帮助:当我这样做时,代码中出现了新的错误。命名空间“System.Windows”中不存在类型或命名空间名称“Navigation”。是否缺少程序集引用?看起来您必须添加对PresentationFramework.dll的引用才能使用System.Windows.Navigation