谷歌搜索时没有得到任何具体答案
最佳答案
LINQ是一个广泛的技术名称,涵盖了大部分.NET 3.5和C#3.0的更改; “以语言查询”等等。
委托(delegate)相当于功能指针;如果您愿意,可以将“方法句柄”作为对象,即
Func<int,int,int> add = (a,b) => a+b;
是一种写代表的方式,我可以打电话给他。代表们还支持事件和其他回调方法。
匿名方法是用于创建委托(delegate)实例的2.0快捷方式,例如:
someObj.SomeEvent += delegate {
DoSomething();
};
他们还通过“捕获的变量”(上面未显示)将完全闭包引入语言。 C#3.0引入了lambda,它可以产生与匿名方法相同的结果:
someObj.SomeEvent += (s,a) => DoSomething();
但是可以将和编译成表达式树,以针对(例如)数据库进行完整的LINQ。例如,您不能针对SQL Server运行委托(delegate)!但:
IQueryable<MyData> source = ...
var filtered = source.Where(row => row.Name == "fred");
可以将其编译成表达式树(
System.Linq.Expression
)并将其转换为SQL。所以: