別のクラス オブジェクトに属するメソッドにデリゲートを割り当てようとしています。
TestingClass testObj = new TestingClass();
Delegate myDelegate = testObj.testMethod; //syntax error
私の意図はmyDelegate
、 のメソッドを指すことtestMethod
ですtestObj
。上記のコードには構文エラーがあります。
C#でこれを行う正しい構文は何ですか?
互換性のあるデリゲート型の変数に割り当てる必要があります。
Action myDelegate = testObj.testMethod;
デリゲート タイプは、 の定義によって異なりますtestMethod
。
本当にデリゲートを使用したい場合 (適切な名前の型を作成するのに便利です)、独自の型を定義してください。
class Program
{
delegate void D1();
static void Main(string[] args)
{
var testObj = new Program();
D1 myDelegate = testObj.TestMethod;
myDelegate.Invoke();
}
void TestMethod()
{
Console.WriteLine("Foo!");
}
}
デリゲートの使用方法と作成方法については、Jon Skeets のチュートリアルを参照してください。デリゲートとイベントを理解するのは簡単です。
これは、私があなたのために書いた例に基づいて、それをどのように使用できるかについての簡単な例と説明です
//Define a delegate here in your Class
public delegate void MyMessageHandler(string message);
その後、次のように使用できます。
public void DoWork(MyMessageHandler callback)
{
string message = "";
....
callback(message);
}
次に、次のように呼び出します。
public Main()
{
DoWork(ProcessMessages);
}
public void ProcessMessages(string message)
{
....
}