今天看了一下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;
}
}
输出结果
最后 如果有说错的地方,还请懂的朋友指出,不胜感激