C# 代表的核心用途

C# 代表的核心用途,c#,.net,C#,.net,我是c#的新手。我能够理解委托的概念,比如语法,如何使用委托。但我仍然对“为什么我们使用代理”感到困惑。因为它最终用来调用一个方法。为什么我们选择委托?我们使用委托,以便能够在以后执行代码时调用方法。我们可以将一个方法传递给另一个代码块,该代码块可以决定是否以及何时调用它 通过这种方式,我们可以委托调用方法的责任。委托用于许多事情。事件处理程序最常用的if。生成事件的代码不需要知道将处理事件的代码,这些代码可以由第三方提供。换句话说,Microsoft可以提供事件触发代码,让您提供处理这些事件的

我是c#的新手。我能够理解委托的概念,比如语法,如何使用委托。但我仍然对“为什么我们使用代理”感到困惑。因为它最终用来调用一个方法。为什么我们选择委托?

我们使用委托,以便能够在以后执行代码时调用方法。我们可以将一个方法传递给另一个代码块,该代码块可以决定是否以及何时调用它


通过这种方式,我们可以委托调用方法的责任。

委托用于许多事情。事件处理程序最常用的if。生成事件的代码不需要知道将处理事件的代码,这些代码可以由第三方提供。换句话说,Microsoft可以提供事件触发代码,让您提供处理这些事件的方法

委托可以在任何情况下使用,如您提供某种通用处理程序,而其他代码对其执行特定操作

查看代理的另一种方式是,它们是C#处理代理的方式。C#允许您直接传递对方法的引用,大大简化了在C#中实现该模式的方式,而不必为了调用方法而声明通常与该patetrn关联的接口和类

使用委托允许程序员在委托对象中封装对方法的引用。然后可以将委托对象传递给可以调用引用方法的代码,而无需在编译时知道将调用哪个方法


它主要用于事件处理程序,但这不是它的唯一用法;请参见-

中的代理详细信息。您可以查看此答案,了解代理的用法


这个区域有多个问题,你可以浏览。

你可以把委托看作是在某个执行链中用预定义契约“注入”你的代码的方法。

委托可以被发送到另一个函数,本质上使函数“可定制”的一部分。

//这两个调用使用相同的函数(Where),但使用不同的谓词委托
var greaterThanZero=intList.Where(e=>e>0);
var lessThanZero=intList.Where(e=>e<0);

您可以想象一个简单的例子:在导出结果的应用程序中,您有以下选项 1.导出为pdf 2.导出tp csv 3.导出到txt

所有3个选项都有不同的方法实现,这些方法将对您的数据起作用

假设上述三种方法分别调用以下三种方法: 1.ExportToPdf(数据,filepath.pdf) 2.ExportToCsv(数据,filepath.csv) 3.exportToText(数据,filepath.txt)

如您所见,所有3个都具有相同的方法签名。在未来,你可能会有更多的出口类型,你现在还不知道。您将在此处使用具有相同方法签名的委托来代替任何特定方法

除此之外,还有委托的其他用途,如EventHandler、使用BeginInvoke的异步方法调用

//both of these calls use the same function (Where) but with a different predicate delegate
var greaterThanZero = intList.Where(e => e > 0);
var lessThanZero = intList.Where(e => e < 0);