web框架c#委托

web框架中,委托类型表示对具有特定参数列表和返回类型的方法的引用。 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。

委托顾名思义,让别人帮你办件事。委托是C#实现回调函数的一种机制。委托从字面上理解就是一种代理,类似于房屋中介,由租房人委托中介为其租赁房屋。在 C# 语言中,委托则委托某个方法来实现具体的功能。

委托是一种引用类型,虽然在定义委托时与方法有些相似,但不能将其称为方法。

委托在使用时遵循三步走的原则,即定义声明委托、实例化委托以及调用委托。
从数据结构来讲,委托是和类一样是一种用户自定义类型。
委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。
调用委托的时候,委托包含的所有方法将被执行。

概念

web框架中,委托类型表示对具有特定参数列表和返回类型的方法的引用。 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。

委托是引用类型,可以把它看作是用来存方法的一种类型。比如说类型string用来定义存取字符串的变量,那么委托类型delegate就可以用来定义存方法的变量。委托和类一样,是一种用户自定义类型。但类表示的是数据和方法的集合,而委托表示的是一个或多个方法的集合。你可以把delegate看作一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型。

什么是委托?

开发框架委托图示


像声明一个类一样声明一个委托

namespace HomeWork 
{
     public delegate void GetDelegate(string str);
}

开发框架委托图解

 接下来就是使用委托,创建委托,定义两个方法Show1,和Show2。让委托直接指向方法的两种方式,一种是赋值,还有一种是用运算符可以添加也可以减等。现在委托指向了两个方法,然后就是传参执行。

namespace HomeWork
{
    class Program
    {
        static void Main(string[] args)
        {
            GetDelegate addFunc = Show1;//定义委托并赋值
            addFunc += Show2;
            addFunc("这是委托方法");//执行
            Console.ReadKey();
        }
    }
   static void Show1 (string str)
   {
         Console.WriteLine(str+"show1");
    }

    static void  Show2(string str)
    {
         Console.WriteLine("Show2" + str);
    }
  }


简化语法:不需要定义回调方法(以lambda表达式实现)

       /// <summary>
        /// 静态调用
        /// </summary>
        private static void StaticDelegateDemo()
        {
            Console.WriteLine("---------委托调用静态方法------------");
            Counter(1, 10, null);
            //Counter(1, 10, new Feedback(FeedbackToConsole));
            //Counter(1, 10, FeedbackToConsole);
            Counter(1, 10, value => Console.WriteLine(value));
        }

总结

委托像一种数据类型,不过它的值是方法。c#为我们定义了两种委托类型,可以直接使用Action<>和Func<>。Action<参数>指向的是无返回值的方法;Func<参数,返回值>指向的是有返回值的方法,返回值写在参数后面,一旦Func<>指向了多个方法返回的是最后一个方法的值。

标签: C#系列

网站&系统开发技术学习交流群:463167176

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:快速开发框架 » web框架c#委托
本文标题:web框架c#委托
本文地址:https://www.hocode.com/OrgTec/Back/0041.html

相关文章: 快速开发平台提供一组实体操作方法--缓存表达式树和枚举

电话
电话 18718672256

扫一扫
二维码