行动与Func委托怎么在Asp.Net项目中实现

  

行动与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。效果

靶卸隖unc委托怎么在Asp.Net项目中实现"

有了上面的使用之后,我们会发现委托基本都是根据具体方法来声明的,如果不同的方法有3个,4个或者更多的参数,显然,我们需要分别声明不同参数个数的委托,不经意间多了一道”声明委托”的门槛。于是,在。净Framework3.5版本之后发布了。净自带的内置委托行动和Func。我们不用再做“声明委托”的工作,直接可以使用。

<强>行动委托

行动委托提供无参数,有参数方法,但不提供返回类型,具有行动,Action Action<, T1, T2> Action……Action多达16个参数的形式,其中传入参数均采用泛型T,涵盖了几乎所有可能存在的无返回值的委托类型。

<强> Func委托

Func委托提供无参数,有参数方法,同时提供返回类型,具有Func……Func 17种类型重载,T1……t16.1为参数,Tresult为返回类型。

前面我们说,行动委托和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"); 

行动与Func委托怎么在Asp.Net项目中实现