delegate委托
委托的定义:将方法作为函数来进行传递。
委托也就是在普通的函数访问修饰符后面多加上delegate,并且没有实现这个函数。
比如:
public delegate void Test();
使用是直接进行赋值操作,如下:
void Start
{
Test test = Test1;
}
public void Test1()
{
...........
}
如果带参数,那么下面赋值的函数也要有参数,即:
public delegate void Test(int a , int b);
void Start
{
Test test = Test1;
}
public void Test1(int a, int b)
{
...........
}
如果带上的是泛型的参数:
public delegate void Test<T>(T a);
void Start
{
Test<string> test = Test1;
}
public void Test1(sring a)
{
...........
}
如果有返回值,那么接入的函数也就要有返回值:
public delegate int Test();
void Start
{
Test test = Test1;
}
public int Test1()
{
...........
return 1000;
}
上面的调用直接调用test()就可以了。(如果有参数记得传入参数)
Action泛型委托
Action的泛型委托。(需要引用System命名空间)
注意:1.Action委托无返回值。
2.Action的委托最少无参数,最多16个参数。
3.Action委托不需要声明,只是需要赋值然后就可以直接调用。(上面的delegate委托是需 要提前声明的)
举例:
void Start
{
Action test = Test1;
}
public int Test1()
{
...........
}
接下来是带参数的:
void Start
{
Action<int,int> test = Test1;(这里Action是泛型的,需要几个参数就写几个,注意对应)
}
public int Test1(int a,int b)
{
...........
}
上面的调用同样是test()就可以了。(如果有参数记得传入参数)
(注意参数和函数的参数保持一致)
Func泛型委托
接下来是Func泛型委托:(需要引用System命名空间)
注意:1.Func委托必须有返回值。
2.传入参数最少0个,最多16个。
3.同样不用声明。
举例:
不带参数的:
void Start
{
Func<int> test = Test1;
}
public int Test1()
{
...........
return 1000;
}
(注意Func后面至少写一个参数,这个是返回值,如果有多个 ,最后1个为返回值,前面的都为参数)
带参数的:
void Start
{
Func<int,int,string> test = Test1;
}
public string Test1(int a ,int a)
{
...........
return “返回值”;
}
注意这里Func后面有三个参数,最后一个是返回值的类型,前面的都是函数传入的参数(注意参数和函数的参数保持一致)。