我理解大多数C#语法,我部分理解委托,但我找不到任何需要使用它们的情况。
您可以通过一些示例帮助我了解他们在软件开发中的位置吗?我会很开心的。谢谢。
答案 0 :(得分:1)
代表是表达代码提供者和代码使用者之间相互义务的另一种方式。
就像“我需要一个可以添加两个整数并返回两个整数的人”和“嘿,我是一个方法,我可以添加两个整数并且我返回一个int,你可以使用我”。
从遥远的角度来看,问“我为什么需要代表”就像问“为什么我需要接口”。而不是表达“类合同”,而是表达“方法合同”。
有趣的是,大多数使用代理处理的案例都可以通过接口处理,反之亦然。只是C#为您提供了两种机制之间选择的更大灵活性。例如,在Java中没有这种灵活性,其中义务是使用接口表示的。
答案 1 :(得分:1)
委托的一个功能是充当函数指针。在我必须制作的程序的情况下,我需要运行类似的函数并以数组样式调用它们。
例如,如果你有一些功能。
double play(int data1, int data2)
double work(int x, int y)
这两个人签名相同。他们都返回双打,两者都有2个整数。 他们可以通过代表打电话
delegate double myFunctions(int a, int b);
所以我想说我需要从同一个函数运行“play”和“work”。我可以这样做:
public void do_something( myFunctions action, String information)
{
int input1;
int input2;
/*
Lets say the string was.... the dimensions of a rectangle expressed as 5x8
here we parse the string so...
information is "5x8:
set input1 to 5
set input2 to 8
*/
//then run the function that was passed in.
action(input1, input2);
}
您可以将此功能称为:
do_something(play, "5x8");
//or
do_something(work, "484x237");
那里的评论区域是我认为会使这不是一个微不足道的例子。基本上,至少在这种情况下,它可以帮助模块化程序。