[英]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(); 然后在堆上分配內存,初始化所需的內容,最后將地址放入變量someEmployee。
然后,堆中的內容就是一個雇員擁有的數據 。 就像我們過去經常看到的那樣,不難理解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.