1. 委托声明的关键字是什么?
delegate
2. 请解释.NET采用委托实现的事件模型与JAVA中采用接口实现的事件模型有什么区别,
.net中的委托概念java中没有相同的,只有事件模式是一样的,java中有一个叫Obserable接口,可以添加IEventListener,使用内部类可以构建类似于委托的概念
3. C#中的委托是什么?事件是不是一种委托?
C#中的委托是一种引用类型,表示具有相同方法签名的方法的引用。类似于函数指针,也就是说它们是指向函数的“引用”,更加安全。
事件不是委托,是委托类型的变量。
4. 委托回调静态方法和实例方法有何区别?
当一个实例方法被调用时,需要通过实例对象来访问,绑定一个实例方法到委托必须同时让委托得到实例方法的代码段和实例对象的信息,这样在委托被回调时候.NET才能成功地执行该实例方法。委托内部的对象成员变量target是一个指向目标实例的引用。当委托绑定静态方法时,内部的对象成员变量target将会被设置成null,而当委托绑定实例方法时,_target将会设置成指向该实例方法所属类型的一个实例对象,当委托被执行时,该对象实例将被用来调用实例方法。
5. 什么是链式委托?
链式委托是指一个由委托串成的链表,当链表上的一个委托被回调时,所有链表上该委托的后续委托将会被顺序执行。在委托中存在内部的对象成员变量_prev,该指针指向委托链中的下一个委托。
6. 委托是否可以有返回值?
委托可以是带有返回值的方法,但多于一个带返回值的方法被添加到委托链中时,程序员需要手动的调用委托链上的每一个方法,否则委托使用者将只能得到委托链上最后一个被执行方法的返回值。
7. 如何理解委托
委托是一种特殊的引用类型,允许将方法作为参数进行传递。
委托在使用过程中的一般步骤:类型定义、对象创建和方法绑定,方法调用。
委托是一种引用方法类型,一旦委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托可以看作是对函数的抽象,是函数的‘类’,委托的实例将代表一个具体的函数。
8. Linq查询,lambda表达式
LINQ(Language Integrated Query,语言集成查询)提供了一种跨数据源和数据格式的统一模型,实现查询。主要包括三个部分:LINQ to Objects、LINQ to XML、LINQ enabled ADO.NET,而在LINQ enabled ADO.NET中又包括LINQ to DataSet、LINQ to SQL 和 LINQ to Entities。
“**Lambda** 表达式”是一种简化的匿名函数,在C#3.0中引入的,可用于创建委托或表达式目录树。也可以将 Lambda 表达式作为参数或者返回值使用。它的语法形式是: 输入参数 => 表达式或语句块,其中,=> 读作“goes to”,在LINQ查询中大量的使用到。
9. Linq查询的优势。
无需复杂学习过程即可上手。
编写更少代码即可创建完整应用。
更快开发错误更少的应用程序。
无需求助奇怪的编程技巧就可合并数据源。
让新开发者开发效率更高。
任何对象或数据源都可以定制实现Linq适配器,为数据交互带来真正方便。
10. Linq中concat union intersect的区别
Concat :连接两个序列。
Union : 通过使用默认的相等比较器生成两个序列的并集。
Intersect : 通过使用默认的相等比较器对值进行比较生成两个序列的交集。
11. Linq与SQL语句的执行速度哪个更快?
SQL语句的执行速度更快