行动与Func委托怎么在Asp。净项目中实现?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
格式:
- <李>用关键字“委托”修饰委托李> <>李委托的返回值和参数要和被委托的方法保持一致李>
形如:
///& lt; summary>///声明委托///& lt;/summary> 公众委托无效BuyGoodsDelegate(字符串名称);///& lt; summary>///委托的方法///& lt;/summary> 公共空间BuyGoods(字符串名称) { Console.WriteLine($“小明让我去买{名称}“); }
<>强委托和方法关联强>
在声明了委托和定义好方法之后,我们需要将委托和方法进行关联,这样委托才能知道自己要调用的是哪个方法。
//委托和方法关联 BuyGoodsDelegate buyGoods=new BuyGoodsDelegate (buyGoods);
将委托和方法进行关联之后,我们就可以直接操作委托实例来进行方法的调用,调用方式和直接调用方法差不多。
//调用方式1 buyGoods(“鞋子“);//调用方式2所示 buyGoods.Invoke(“衣服“);
4。效果
有了上面的使用之后,我们会发现委托基本都是根据具体方法来声明的,如果不同的方法有3个,4个或者更多的参数,显然,我们需要分别声明不同参数个数的委托,不经意间多了一道”声明委托”的门槛。于是,在。净Framework3.5版本之后发布了。净自带的内置委托行动和Func。我们不用再做“声明委托”的工作,直接可以使用。
<强>行动委托强>
行动委托提供无参数,有参数方法,但不提供返回类型,具有行动,Action
<强> Func委托强>
Func委托提供无参数,有参数方法,同时提供返回类型,具有Func
前面我们说,行动委托和Func委托不用再声明,便可直接使用,除了这一点,它们还支持匿名函数,λ表达式形式。
普通函数调用
其中,学生是入参类型,字符串为返回参数类型
//委托和方法关联 string> Func<学生;funcNew=FuncTestDelegate;///& lt; summary>///字符串返回类型方法///& lt;/summary>///& lt;参数name=皊tudent"祝辞& lt;/param>///& lt; returns> & lt;/returns> 公共字符串FuncTestDelegate(学生学生) { 返回student.StudentName; }
我们可以看到Func委托使用的时候,不用声明便可以直接使用。
匿名函数
匿名函数需要用关键字“委托”声明
//Func匿名函数 Funcfunc3=委托(int num1, int num2) { 返回“美元;Func:总和:{num1 + num2}“; };//调用 var=结果func3 (10、20);
λ表达式
//Funcλ表达式无参数 Funcfunc1=()=比; { 返回“Func:你好“; }; var=结果func1 ();//函数λ表达式有参数 字符串aa=癆BC"; 字符串bb=癉EF"; Func<字符串,字符串,string>func2=(p1, p2)=比; { 返回“美元Func: {p1},你好{p2}“; }; 结果=func2 (aa、bb);
行动委托实例
行动委托和Func委托的唯一区别就是没有返回类型,其他用法都一样,当不需要返回类型的时候,直接用行动委托。
//行动λ表达式 string> Action<字符串;action=(p1, p2)=比; { Console.Write($“行动:{p1},你好{p2}“); }; 操作(“ABC",“DEF");