我看到该委托用于自定义事件.就目前而言
delegate string FuncRef(string Val);
FuncRef fValue = GetFieldName;
fValue("hello");
Run Code Online (Sandbox Code Playgroud)
我在这里做的只是声明委托并为委托分配一个函数名称,并fValue("hello");在需要时调用.
而不是调用GetFieldName()直通委托我可以直接调用它.所以我只想知道为什么我应该使用委托来调用函数,因为我们可以直接调用函数....通过委托调用任何函数的优点是什么.
所以请告诉我在除了事件处理之外需要委托使用的场景.请指导我使用示例代码并模拟我需要通过委托调用函数的情况,除了事件处理.请告诉我一些现实生活场景,我们必须通过委托调用函数.
使用委托而不是直接调用函数的原因与您的原因相同
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"示例与任何语言相关:过滤列表.
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)