gpt4 book ai didi

c# - 委托(delegate)们,为什么?

转载 作者:IT王子 更新时间:2023-10-29 03:47:29 26 4
gpt4 key购买 nike

<分区>

Possible Duplicates:
When would you use delegates in C#?
The purpose of delegates

我看到很多关于使用委托(delegate)的问题。我仍然不清楚在哪里以及为什么要使用委托(delegate)而不是直接调用方法。

我多次听到这句话:“然后可以将委托(delegate)对象传递给可以调用引用方法的代码,而不必在编译时知道将调用哪个方法。”

我不明白这种说法是正确的。

我编写了以下示例。假设您有 3 个具有相同参数的方法:

   public int add(int x, int y)
{
int total;
return total = x + y;
}
public int multiply(int x, int y)
{
int total;
return total = x * y;
}
public int subtract(int x, int y)
{
int total;
return total = x - y;
}

现在我声明一个委托(delegate):

public delegate int Operations(int x, int y);

现在我可以更进一步,声明一个处理程序来使用这个委托(delegate)(或直接使用您的委托(delegate))

调用委托(delegate):

MyClass f = new MyClass();

Operations p = new Operations(f.multiply);
p.Invoke(5, 5);

或调用handler

f.OperationsHandler = f.multiply;
//just displaying result to text as an example
textBoxDelegate.Text = f.OperationsHandler.Invoke(5, 5).ToString();

在这两种情况下,我看到指定了我的“乘法”方法。为什么人们使用“在运行时更改功能”或上面的短语?

如果每次声明委托(delegate)时都需要一个方法来指向它,为什么还要使用委托(delegate)?如果它需要一个方法来指向,为什么不直接调用那个方法呢?在我看来,我必须编写更多代码才能使用委托(delegate),而不仅仅是直接使用函数。

谁能给我一个真实世界的情况?我完全糊涂了。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com