-4

以下代码给了我这些错误,

} 预期的

类型或命名空间定义,或预期的文件结尾

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Derpy merp = new Derpy();
            merp.OnDerp += new EventHandler(herp);
            void herp(object sender, EventArgs e)
            {

            }

        }


    }
}

我该如何解决?

4

6 回答 6

4

解决方案 1:试试这个(匿名方法):

merp.OnDerp += (sender, e) =>
    {
        // add your code here...
        // may be 
        // derpy = ((Derpy) sender);
        // be useful.
    };

解决方案2:最简单的方法:

 // add event handler
 merp.OnDerp += new EventHandler(herp);

并使用它:

// this must be in class body. not in another method
void herp(object sender, EventArgs e)
{
    // add your code here...
}

看到这些教训:

于 2012-07-14T04:39:04.517 回答
2

您收到错误是因为您试图在另一个函数中声明一个普通的命名函数,但 C# 仅支持在其他函数中声明的匿名函数。

要使用匿名函数:

private void button1_Click(object sender, EventArgs e)
{
  Derpy merp = new Derpy();
  merp.OnDerp += (sender, e) =>    
  {

  };
}

或者将您的方法带到点击事件之外

private void button1_Click(object sender, EventArgs e)
{
  Derpy merp = new Derpy();
  merp.OnDerp += new EventHandler(herp);
}
void herp(object sender, EventArgs e)
{

}
于 2012-07-14T04:27:20.743 回答
1

这个:

private void button1_Click(object sender, EventArgs e)
{
    ...
    void herp(object sender, EventArgs e)
    {

    }
}

您不能将命名函数嵌入到这样的另一个函数中。

于 2012-07-14T04:26:08.887 回答
1

权利将是

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Derpy merp = new Derpy();
            merp.OnDerp += new EventHandler(herp);


        }
        private void herp(object sender, EventArgs e)
        {

        }


    }
}
于 2012-07-14T04:28:19.937 回答
0

看起来像代码

void herp(object sender, EventArgs e)
{
}

也许最好成为一种方法本身。我不认为 C# 支持像 JavaScript 这样的方法中的方法

于 2012-07-14T04:26:22.710 回答
0

在您的代码中找到嵌套方法,而C#不支持它。

利用:

private void button1_Click(object sender, EventArgs e)
{
     Derpy merp = new Derpy();
     merp.OnDerp += new EventHandler(herp);

}

void herp(object sender, EventArgs e)
{

}
于 2012-07-14T04:37:35.873 回答