簡體   English   中英

將委托指向類中的方法

[英]Pointing a delegate to a method in a class

我試圖將委托分配給屬於另一個類對象的方法。

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

我的本意是指myDelegate的方法testMethodtestObj 上面的代碼有語法錯誤。

在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教程,了解如何使用和創建Delegates,它很容易直接理解Delegates和Events

這是一個簡單的示例,並根據我為您編寫的示例說明了如何使用它

//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)
{
    ....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM