由于某种原因

时间:2012-07-14 04:23:52

标签: c#

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

}预期

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

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)
            {

            }

        }


    }
}

我该如何解决这个问题?

6 个答案:

答案 0 :(得分: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...
}

请参阅以下课程:

答案 1 :(得分: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)
{

}

答案 2 :(得分:1)

此:

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

    }
}

你不能在这样的另一个函数中嵌入一个命名函数。

答案 3 :(得分: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)
        {

        }


    }
}

答案 4 :(得分:0)

看起来像代码

void herp(object sender, EventArgs e)
{
}

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

答案 5 :(得分: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)
{

}