c#委托的使用(1)

今天看了一下c#的委托,什么是委托。委托就是把方法当作是变量来处理,可以进行赋值运算传参操作 。关键字 delegate。可以说委托就是一种数据类型
创建委托的步骤

  • 在VS项目里新添加一个类
    这里写图片描述
  • 把新建类里面关于类的信息删掉,添加一个不用实现的方法,加上delegate关键字.这个方法就是委托方法。注意,往委托里添加方法的时候,参数要和此方法的参数一致。
using System;
using System.Collections.Generic;
using System.Text;

namespace HomeWork
{
    public delegate void GetDelegate(string str);
}
  • 接下来就是使用委托,创建委托,定义两个方法Show1,和Show2。让委托直接指向方法的两种方式,一种是赋值,还有一种是用运算符可以添加也可以减等。现在委托指向了两个方法,然后就是传参执行
using System;

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);
    }
  }
  • 执行的结果
    这里写图片描述

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

  • Action使用案例,定义下Action类型的委托,赋值然后执行。
using System;
namespace Homework
{
    class Program
    {
        static void main(string[] args)
        {
            Action<string> action1 = Show1;//定义委托并赋值 
            action1+=Show2;//添加方法
            action1("委托的使用");//执行
        }
    }
    static void Show1(string str)
    {
        Console.WriteLine(str+"Show1");
    }
    static void Show2(string str)
    {
        Console.WriteLine(str+"Show2");
    }
}

运行结果
这里写图片描述

  • Func<参数,返回值>的使用,返回值是指向的最后一个方法的返回值
using System;
namespace Homework
{
    class Program
    {
        static void main(string[] args)
        {
            Func<string,int> action1 = Show1;
            action1+=Show2;
            Console.WriteLine(action1("委托的使用"));//执行并输出返回值,返回值是Show2的返回值
        }
    }
    static int Show1(string str)
    {
        Console.WriteLine(str+"Show1");
        return 1;
    }
    static int Show2(string str)
    {
        Console.WriteLine(str+"Show2");
        return 2;
    }
}

输出结果
这里写图片描述
最后 如果有说错的地方,还请懂的朋友指出,不胜感激

猜你喜欢

转载自blog.csdn.net/qq_38061677/article/details/80787575