-1

別のクラス オブジェクトに属するメソッドにデリゲートを割り当てようとしています。

TestingClass testObj = new TestingClass();
Delegate myDelegate = testObj.testMethod;   //syntax error

私の意図はmyDelegate、 のメソッドを指すことtestMethodですtestObj。上記のコードには構文エラーがあります。

C#でこれを行う正しい構文は何ですか?

4

3 に答える 3

3

互換性のあるデリゲート型の変数に割り当てる必要があります。

Action myDelegate = testObj.testMethod;

デリゲート タイプは、 の定義によって異なりますtestMethod

于 2012-12-21T23:45:03.880 に答える
1

本当にデリゲートを使用したい場合 (適切な名前の型を作成するのに便利です)、独自の型を定義してください。

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!");
    }
}
于 2012-12-21T23:49:30.343 に答える
0

デリゲートの使用方法と作成方法については、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)
{
    ....
}
于 2012-12-21T23:44:51.063 に答える