我们知道委托是引用函数的引用类型。
using System;
namespace Testing_Delegates
{
class Program
{
delegate void fun_delegate();
fun_delegate response;
static void Main(string[] args)
{
Program p = new Program();
p.fun();//Calling function directly
p.response += p.fun;//Setting reference to the function via delegate
}
public void fun()
{
int lvariable = 10000;
string rvariable = "Hello Developers!";
Console.WriteLine(lvariable + " " + rvariable);
}
}
}
我们知道函数内部的局部变量(fun)是lvariable,它是在堆栈上分配的内存,而rvariable包含对存储字符串的堆的内存位置的引用。
现在,
- 当我们定义委托的委托或实例时,他们(fun_delegate和response)在哪里分配内存,无论是在堆栈上还是在堆上?
- 为什么需要创建委托实例以将其引用到任何函数?
醇>
答案 0 :(得分:2)
示例中的当我们定义委托的委托或实例时,它们在哪里 (fun_delegate和response)分配内存,无论是在堆栈上还是在堆栈上 堆?
fun_delegate
是一个类,存储在元数据中。
response
是引用类型中的一个字段,并在堆上与所述类型的所有其他字段一起分配。
为什么需要创建委托实例来引用它 任何功能?
我们需要创建一个实例来在内存中分配位置来记录数据。除非为字段/变量分配内存,否则无处存储它们的值。