简易了解C#中的委托
-
什么是委托?
简单的理解就是就是叫你女盆友帮你去做饭(先定义你自己为委托,你女朋友为某个方法(事件),然后通过你去调用她),这就体现了委托的关系(你委托她); -
委托使用细节
1.委托可以当做是一个类,他跟类同级,所以不能定义在类方法下面可以与类同级,也可以写在类外边(命名空间下)写在类外相当于“全局变量”,定义在类下面,其他类的方法不能委托;
2.要使用委托,委托与方法 的参数类型,参数个数,返回值类型都必须相同不然2者不能产生关系 如下:
// 示例
public delegate int show(int x); //委托;
static int square(int x) => x * x; //此方法与下方法对等
//static int Show(int x) {
// return x + x;
// } ;
- 委托与事件的区别
1.事件是放在类里面的,委托不能;
2.事件在外部不能直接掉用 (委托可以)
3.委托是一种数据类型,而事件可以看为是dalegate里对委托的一种封装
4.事件是通过+=和-=来赋值,而委托则是 =;
不要把事件与委托记混了。
举个简单委托的例子,如下
//示例
using System;
using System.Security.Cryptography.X509Certificates;
namespace 委托2
{
public delegate int show(int x); //委托 放在外面为全局变量
class Program
{
static int square(int x) => x * x; //此处省略了 return;
static void Main(string[] args)
{
int[] v = { 1,3,3};
show a = square; //为委托注册方法
Util.Show(v,a);
foreach (int i in v) {
Console.WriteLine(i);
}
}
class Util {
public static void Show(int[] valus,show d){ //show方法执行时,同时在调用另一个方法(用委托做形参)
for(int i= 0; i < valus.Length; i++) {
valus[i] = d(valus[i]); //d扩号中为委托所带参数的值,用来调用委托方法在赋值给values[i];
}
}
}
}
小白的简易理解,如有错误,请多包涵