以下代码给出了这些错误,
}预期
类型或命名空间定义,或预期的文件结尾
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)
{
}
}
}
}
我该如何解决这个问题?
答案 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)
{
}