簡體   English   中英

代表如何指向方法?

[英]How can delegates point to methods?

在C#中,我們有值類型和引用類型。 我很了解一些代碼,例如

public class Employee
{
   // Code for Employee goes here 
}

public class Program
{
     public void Main(string[] args)
     {
          Employee someEmployee;
          someEmployee = new Employee();
          // Do something with someEmployee
     }
}

當我們做Employee時,某些雇員; 運行時會在堆棧上分配足夠的內存,以容納用於保存Employee數據的一部分堆的地址。 該行someEmployee = new Employee(); 然后在堆上分配內存,初始化所需的內容,最后將地址放入變量some​​Employee。

然后,堆中的內容就是一個雇員擁有的數據 就像我們過去經常看到的那樣,不難理解someEmployee擁有對內存中有數據的引用。

現在,一個委托指向一個方法。 但這意味着什么? 指一種方法意味着什么? 方法是否像其他數據一樣保存在堆中? 這使我感到困惑,因為方法不僅是一堆數據,而是一堆指令,那么存儲指令應該是什么意思?

您可以將代表視為這樣

public class Action : Delegate
{
    private object instance;
    private MethodInfo method;
    public void Invoke()
    {
        method.Invoke(instance, new object[]{});
    }
}

現在,顯然,這並不完全是這樣,並且有很多語法糖和直接的運行時支持等,但這應該使您對發生的事情有所了解。 委托只是一個類型,很像一個類。 這將導致在堆上分配內存,以表示一個方法和一個調用它的(可選)實例,並且鍵入為委托的變量將保留對此對象的引用。

暫無
暫無

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

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