代表的用法

Mou*_*Mou 8 c# delegates

我看到该委托用于自定义事件.就目前而言

delegate string FuncRef(string Val);

FuncRef fValue = GetFieldName;

fValue("hello");
Run Code Online (Sandbox Code Playgroud)

我在这里做的只是声明委托并为委托分配一个函数名称,并fValue("hello");在需要时调用.

而不是调用GetFieldName()直通委托我可以直接调用它.所以我只想知道为什么我应该使用委托来调用函数,因为我们可以直接调用函数....通过委托调用任何函数的优点是什么.

所以请告诉我在除了事件处理之外需要委托使用的场景.请指导我使用示例代码并模拟我需要通过委托调用函数的情况,除了事件处理.请告诉我一些现实生活场景,我们必须通过委托调用函数.

Jon*_*Jon 5

使用委托而不是直接调用函数的原因与您的原因相同

var taxRate = 0.15;
var taxAmount = income * taxRate;
Run Code Online (Sandbox Code Playgroud)

代替

var taxAmount = income * 0.15;
Run Code Online (Sandbox Code Playgroud)

换句话说:使用变量来保存对可调用实体的引用(委托就是这样)允许您编写可以根据传递给它的参数来改变其行为的代码(我们传入的delagate 的值)).这意味着更灵活的代码.

有关使用委托的代码示例,您可以查看LINQ(当然),但也有"委托101"示例与任何语言相关:过滤列表.


Ale*_*x F 2

delegate string FuncRef(string Val);

FuncRef fValue;   // class member

if (condition1)
    fValue = GetFieldName1;
else if (condition2)
    fValue = GetFieldName2;
else
    fValue = GetFieldName3;

// Another function
fValue("hello");
Run Code Online (Sandbox Code Playgroud)