6-8笔记

来源:互联网 发布:python输入输出函数 编辑:程序博客网 时间:2024/04/29 03:13
1、这样写,[iI][mM][gG],在正则表达式里面匹配大小写。
2、委托:是一种数据类型,像类一样(可以声明委托类型变量)。使用的时候也要new一个对象,传递一个变量。通过delegate关键字定义委托。委托实例化就可以存储方法。
我们定义一个委托,其实就是最后给我们生成了一个密封的类,委托和类其实是一回事,最后就是生成了一个类;存放方法的变量(委托),委托还是一个类,把方法包装成了一个委托。
3、public delegate void MethodDelegate();定义了一个委托。使用delegate关键字,这个委托将来要存储的方法如果没有返回值,那么这个委托也要定义成void,如果没有参数那么将来传递的方法也不能有参数。声明的委托是一种类型就像int一样,如果要用的话还要声明委托类型的变量。

将委托类型变量指向函数 StringProcess sp = new StringProcess(SayHello),这样就可以像调用普通函数一样把sp当成函数用了。委托可以看做是函数的指针。整数可以用整数变量指向它,对象可以用对象变量指向它,函数也可以用委托变量指向它。和直接调用函数的区别:用委托就可以指向任意的函数,哪怕是之前没定义的都可以,而不使用受限于那几种。

 4、MethodDelegate  myMethod=M2;声明委托变量myMethod,将M2方法赋值给myMethod变量,就可以直接调用了,这只是一个简化的写法,其实编译器在编译时,也帮我们new了一个委托对象。但是不能myMethod=M2();因为这样就成了函数调用。

5、委托作用就是:可以在某个代码内部嵌入一段外部代码,相当于是:注入。
6、委托变量是一个引用类型,是一个字段,不赋值默认是null;一般在调用委托前,或者在触发事件前都要判断一下委托变量或者事件是否为null,不为null才调用。
md(),这种调用方法,内部编译的时候调用了委托对象的Invoke()方法,和md.Invoke()方法一样。委托类型的变量是一个方法的变量,可以直接调这个变量,相当于调方法。
7、委托只是把方法中变得地方提取出来,便于写出通用的代码。
8、其实,事件就是委托。
9、lambda其实就是一个匿名函数而已,编译的时候会将lambda表达式编译成一个C#匿名方法,但是有lambda表达式会在很多时候减少代码量搜搜lambda表达式。
10、Linq,语言集成查询。
0 0