私は、デリゲートを宣言:デリゲートに追加された関数が静的である必要があるのはなぜですか?
public delegate void Del(string message);
その後、私は私がデリゲートに追加したい機能を作成しました:
public static void DelegateMethod(string message)
{
System.Console.WriteLine(message);
}
今、私は、デリゲートに機能を追加し、それを呼び出す:
Del handler = new Del(DelegateMethod);
handler("Hello World");
Console.Read();
DelegateMethodからstatic
を削除するとエラーが表示されるのはなぜですか?
私が委任する関数は静的でなければならないのはなぜですか?
どの範囲でハンドラを追加しているのでしょうか? –
重複 - http://stackoverflow.com/questions/2298997/why-cant-a-delegate-refer-to-a-non-static-method-when-used-in-static-method – scibuff
多分あなたは静的なクラス/関数内からコードを呼び出していますか?私はVSのコンソールアプリケーションのデフォルトだと思います(あなたの 'Main'関数は静的です)。非静的関数は、それらを含むクラスのインスタンスを持っているときにしかアクセスできません。 – musefan