-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 に答える